现在的位置: 首页 > 综合 > 正文

使用JDOM解析XML

2013年08月06日 ⁄ 综合 ⁄ 共 3158字 ⁄ 字号 评论关闭

 使用JDOM解析XML

Code:
  1. package myclass.myxml;  
  2.   
  3. import java.io.*;  
  4. import java.util.List;  
  5. import org.jdom.*;  
  6. import org.jdom.input.SAXBuilder;  
  7. import org.jdom.xpath.*;  
  8.   
  9. public class ReadXml {  
  10.   
  11.     /** 
  12.      * @解析XML 
  13.      */  
  14.     public static void main(String[] args) {  
  15.         ReadXml rx=new ReadXml();  
  16.         try {  
  17.             rx.read();  
  18.         } catch (Exception e) {  
  19.             e.printStackTrace();  
  20.         }  
  21.   
  22.     }  
  23.     public void read() throws JDOMException, IOException{  
  24.         FileInputStream fis=new FileInputStream(new File("f:/temp/school.xml"));  
  25.         InputStreamReader isr=new InputStreamReader(fis,"UTF-8");  
  26.         SAXBuilder sax=new SAXBuilder();  
  27.         Document doc=sax.build(isr);  
  28.         Element root=doc.getRootElement();  
  29.         //this.readAtrr(root);  
  30.         //读取ROOT的所有子节点  
  31. //      List<Element> root_children=root.getChildren();  
  32. //      Element fileBuildTime=root_children.get(0);  
  33. //      System.out.println(fileBuildTime.getName()+" "+fileBuildTime.getTextTrim());  
  34.           
  35.         //根节点知道子节点的名称  
  36. //      Element fileBuildTime=root.getChild("fileBuildTime");  
  37. //      System.out.println(fileBuildTime.getName()+" "+fileBuildTime.getTextTrim());  
  38.           
  39.         //取第一学年中的第二门课程  
  40. //      Element college=root.getChild("college");  
  41. //      Element Class=college.getChild("Class");  
  42. //      List<Element> academicYear=Class.getChildren("academicYear");  
  43. //      Element one=academicYear.get(0);  
  44. //      List<Element> courses=one.getChildren("course");  
  45. //      //System.out.println(course.get(1).getName()+" "+course.get(1).getAttribute("courseName").getValue()+" "+course.get(1).getTextTrim());  
  46. //      Element course=courses.get(1);  
  47. //      System.out.println(course.getName()+"  "+course.getText());  
  48. //      this.readAtrr(course);  
  49.           
  50.         //通过XPath应用类直接定位节点  
  51. //      XPath xp=XPath.newInstance("//college/Class/academicYear");  
  52. //      List<Element> academicYear=xp.selectNodes(doc);  
  53. //      Element one=academicYear.get(0);  
  54. //      List<Element> courses=one.getChildren("course");  
  55. //      Element course=courses.get(1);  
  56. //      System.out.println(course.getName()+"  "+course.getText());  
  57. //      this.readAtrr(course);  
  58.           
  59.         //查找所有的course的成绩  
  60. //      XPath xp=XPath.newInstance("//college/Class/academicYear/course");  
  61. //      List<Element> courses=xp.selectNodes(doc);  
  62. //      for(int i=0;i<courses.size();i++){  
  63. //          this.readAtrr(courses.get(i));  
  64. //          System.out.print(courses.get(i).getTextTrim()+"</course>");  
  65. //          System.out.println();  
  66. //      }  
  67.         //查找所有的course的结点  
  68.         XPath xp=XPath.newInstance("//college/Class/academicYear/course");  
  69.         List<Element> academicYear=xp.selectNodes(doc);  
  70.         for(int i=0;i<academicYear.size();i++){  
  71.         System.out.println(academicYear.get(i).getName());  
  72.         }  
  73.     }  
  74.     public void readAtrr(Element e){  
  75.         List<Attribute> attrName=e.getAttributes();  
  76.         System.out.print("<"+e.getName()+" ");  
  77.         for(Attribute attr:attrName){     
  78.             System.out.print(attr.getName()+"="+attr.getValue()+" ");  
  79.         }  
  80.         System.out.print(">");  
  81.     }  
  82. }  

 

抱歉!评论已关闭.