黑马程序员技术交流社区

标题: XML自学笔记2(Java 操作 XML (JDOM&DOM4J)) [打印本页]

作者: 呱码农    时间: 2016-11-23 19:35
标题: XML自学笔记2(Java 操作 XML (JDOM&DOM4J))


一、Java  操作 XML  (JDOM&DOM4J)

       JDOM是什么?
        JDOM 是一种使用 XML(标准通用标记语言下的一个子集)的独特 Java 工具包,用于快速开发 XML 应用程序。它可以生成XML和修改XML

        1、用JDOM生成一个XML文件:

        1)JDOM 官方网站:http://www.jdom.org/,下载JDOM,然后导包。
        2)下面是代码:
public class JDOM01 {
   public static voidmain(String[] args) {
      
      Element student=new Element("student");
      Attribute id = newAttribute("id", "001");
      Attribute aa = newAttribute("aa", "xx");
      student.setAttribute(id);
      student.setAttribute(aa);
      Element name=new Element("name");
      name.setText("张三");
      student.addContent(name);
      Element sex=new Element("sex");
      sex.setText("");
      student.addContent(sex);
      Element age=new Element("age");
      age.setText("21");
      student.addContent(age);
      Document document=new Document(student);
      XMLOutputter out =newXMLOutputter();
      out.setFormat(out.getFormat().setEncoding("UTF-8"));
      try {
        out.output(document, new FileOutputStream("src/student2.xml"));
      } catch(FileNotFoundException e) {
        // TODOAuto-generated catch block
        e.printStackTrace();
      } catch(IOException e) {
        // TODOAuto-generated catch block
        e.printStackTrace();
      }   
   }

}
      3)生成的studen2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<student id="001" aa="xx"><name>张三</name><sex></sex><age>21</age></student>

发现是这个格式,JDOM生成的XML不会自动排版格式,挺难看的。


  2、用JDOM遍历一个XML文件:

       1)代码:

public class JDOM02 {
   public static voidmain(String[] args) throws Exception {
      SAXBuilder builder=newSAXBuilder();
      Document document = builder.build("src/students.xml");
      Element students=document.getRootElement();
      List studentList =students.getChildren("student");
      for(int i =0;i<studentList.size();i++){
        Element student=(Element)studentList.get(i);
        String id=student.getAttributeValue("id");
        String name=student.getChildText("name");
        String sex=student.getChildText("sex");
        String age=student.getChildText("age");
        System.out.println("學號:"+id+";姓名:"+name+";性別:"+sex+"年齡:"+age);   
      }     
   }
}

    2)运行结果:
學號:001;姓名:张三;性別:男年齡:20
學號:002;姓名:李四;性別:女年齡:20





       DOM4J是什么?
       dom4j 是一个 Java 的 XMLAPI,类似于 jdom,用来读写 XML 文件的。dom4j 是一个非常非常优秀的 JavaXMLAPI,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在 IBM developerWorks 上面可以找到一篇文章,对主流的 Java XMLAPI 进行的性能、功能和易用性的评测,dom4j 无论在哪个方面都是非常出色的。如今你可以看到越来越多的 Java 软件都在使用 dom4j 来读写XML,特别值得一提的是连 Sun 的 JAXM 也在用 dom4j。这是必须使用的jar 包, Hibernate 用它来读写配置文件。
         
       1、用DOM4J生成一个XML文件:
        1)DOM4J 官方网站:http://www.dom4j.org/,下载DOM4J,然后导包。
        2)下面是代码:
public class DOM4J01 {
   /**
    * 生成xml
    * @param args
    */
   public static voidmain(String[] args) {
      Document document=DocumentHelper.createDocument();
      Element studentElement=document.addElement("student");//通過文檔添加元素
      studentElement.addAttribute("id", "001");//添加屬性
      studentElement.addAttribute("aa", "xx");//添加屬性
      
      Element name=studentElement.addElement("name");
      name.setText("張三");
      Element sex=studentElement.addElement("sex");
      sex.setText("");
      Element age=studentElement.addElement("age");
      age.setText("20");
   
      OutputFormat format=OutputFormat.createPrettyPrint();
      format.setEncoding("UTF-8");
      try {
        XMLWriter writer=newXMLWriter(new FileOutputStream("src/student3.xml"),format);
        writer.write(document);
        writer.close();
      } catch(UnsupportedEncodingException e) {
        // TODOAuto-generated catch block
        e.printStackTrace();
      } catch(FileNotFoundException e) {
        // TODOAuto-generated catch block
        e.printStackTrace();
      } catch(IOException e) {
        // TODOAuto-generated catch block
        e.printStackTrace();
      }  
   }

}
3)生成的studen3.xml:
<?xml version="1.0" encoding="UTF-8"?>

<student id="001" aa="xx">
  <name>張三</name>
  <sex></sex>
  <age>20</age>
</student>

用DOM4J生成的xml文件是自动排版格式的,这个比JDOM做的好!顺眼好多了。

      2、用DOM4J遍历一个XML文件:

       1)代码:

public class DOM4J02 {
public static voidmain(String[] args) throws Exception {
   SAXReader saxReader=newSAXReader();
   Document document=saxReader.read("src/students.xml");
   Element rootElement= document.getRootElement();
   Iterator iter = rootElement.elementIterator();
   while (iter.hasNext()){
      Element studentElement=(Element)iter.next();
     System.out.println("學號:"+studentElement.attributeValue("id")+";姓名:"+studentElement.elementText("name")+";性別:"+studentElement.elementText("sex")+";年齡:"+studentElement.elementText("age"));  
   }
}
}


2)运行结果:
學號:001;姓名:张三;性別:男;年齡:20
學號:002;姓名:李四;性別:女;年齡:20



作者: aA772807986    时间: 2016-11-23 22:38
学习学习!!!
作者: xss222    时间: 2016-12-9 00:40
。。。。。。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2