使用JDOM解析XML
- package myclass.myxml;
- import java.io.*;
- import java.util.List;
- import org.jdom.*;
- import org.jdom.input.SAXBuilder;
- import org.jdom.xpath.*;
- public class ReadXml {
- /**
- * @解析XML
- */
- public static void main(String[] args) {
- ReadXml rx=new ReadXml();
- try {
- rx.read();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public void read() throws JDOMException, IOException{
- FileInputStream fis=new FileInputStream(new File("f:/temp/school.xml"));
- InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
- SAXBuilder sax=new SAXBuilder();
- Document doc=sax.build(isr);
- Element root=doc.getRootElement();
- //this.readAtrr(root);
- //读取ROOT的所有子节点
- // List<Element> root_children=root.getChildren();
- // Element fileBuildTime=root_children.get(0);
- // System.out.println(fileBuildTime.getName()+" "+fileBuildTime.getTextTrim());
- //根节点知道子节点的名称
- // Element fileBuildTime=root.getChild("fileBuildTime");
- // System.out.println(fileBuildTime.getName()+" "+fileBuildTime.getTextTrim());
- //取第一学年中的第二门课程
- // Element college=root.getChild("college");
- // Element Class=college.getChild("Class");
- // List<Element> academicYear=Class.getChildren("academicYear");
- // Element one=academicYear.get(0);
- // List<Element> courses=one.getChildren("course");
- // //System.out.println(course.get(1).getName()+" "+course.get(1).getAttribute("courseName").getValue()+" "+course.get(1).getTextTrim());
- // Element course=courses.get(1);
- // System.out.println(course.getName()+" "+course.getText());
- // this.readAtrr(course);
- //通过XPath应用类直接定位节点
- // XPath xp=XPath.newInstance("//college/Class/academicYear");
- // List<Element> academicYear=xp.selectNodes(doc);
- // Element one=academicYear.get(0);
- // List<Element> courses=one.getChildren("course");
- // Element course=courses.get(1);
- // System.out.println(course.getName()+" "+course.getText());
- // this.readAtrr(course);
- //查找所有的course的成绩
- // XPath xp=XPath.newInstance("//college/Class/academicYear/course");
- // List<Element> courses=xp.selectNodes(doc);
- // for(int i=0;i<courses.size();i++){
- // this.readAtrr(courses.get(i));
- // System.out.print(courses.get(i).getTextTrim()+"</course>");
- // System.out.println();
- // }
- //查找所有的course的结点
- XPath xp=XPath.newInstance("//college/Class/academicYear/course");
- List<Element> academicYear=xp.selectNodes(doc);
- for(int i=0;i<academicYear.size();i++){
- System.out.println(academicYear.get(i).getName());
- }
- }
- public void readAtrr(Element e){
- List<Attribute> attrName=e.getAttributes();
- System.out.print("<"+e.getName()+" ");
- for(Attribute attr:attrName){
- System.out.print(attr.getName()+"="+attr.getValue()+" ");
- }
- System.out.print(">");
- }
- }