zoukankan      html  css  js  c++  java
  • Java操作XML牛逼利器JDOM&DOM4J

    JDOM 

    JDOM 是一种使用 XML(标准通用标记语言下的一个子集) 的独特 Java 工具包,用于快速开发 XML 应用 程序。

    JDOM 官方网站:http://www.jdom.org/

    利用JDOM生成xml:

     1 package com.java1234.xml2;
     2 
     3 import java.io.FileNotFoundException;
     4 import java.io.FileOutputStream;
     5 import java.io.IOException;
     6 
     7 import org.jdom2.Attribute;
     8 import org.jdom2.Document;
     9 import org.jdom2.Element;
    10 import org.jdom2.output.XMLOutputter;
    11 
    12 public class JDOM01 {
    13     public static void main(String[] args) {
    14         Element student=new Element("student");
    15         Attribute id=new Attribute("id", "001");
    16         Attribute aa=new Attribute("aa","xxx");
    17         student.setAttribute(id);
    18         student.setAttribute(aa);
    19         Element name=new Element("name");
    20         name.setText("张三");
    21         student.addContent(name);
    22         Element sex=new Element("sex");
    23         sex.setText("女");
    24         student.addContent(sex);
    25         Element age=new Element("age");
    26         age.setText("18");
    27         student.addContent(age);
    28         Document document=new Document(student);
    29         XMLOutputter out=new XMLOutputter();
    30         out.setFormat(out.getFormat().setEncoding("utf-8"));
    31         try {
    32             out.output(document, new FileOutputStream("src/student2.xml"));
    33         } catch (FileNotFoundException e) {
    34             // TODO Auto-generated catch block
    35             e.printStackTrace();
    36         } catch (IOException e) {
    37             // TODO Auto-generated catch block
    38             e.printStackTrace();
    39         }
    40     }
    41 }

    利用JDOM遍历xml文件:

    文件为   students.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <students>
     3     <student id="001">
     4         <name>张三</name>
     5         <sex></sex>
     6         <age>20</age>
     7     </student>
     8     <student id="002">
     9         <name>李四</name>
    10         <sex></sex>
    11         <age>18</age>
    12     </student>
    13 </students>

    java文件:

     1 package com.java1234.xml2;
     2 
     3 import java.util.List;
     4 
     5 import org.jdom2.Document;
     6 import org.jdom2.Element;
     7 import org.jdom2.input.SAXBuilder;
     8 
     9 public class JDOM02 {
    10     public static void main(String[] args) throws Exception {
    11         SAXBuilder builder=new SAXBuilder();
    12         Document document=builder.build("src/students.xml");
    13         Element students=document.getRootElement();
    14         List studentList=students.getChildren();
    15         for(int i=0;i<studentList.size();i++){
    16             Element student=(Element) studentList.get(i);
    17             String id=student.getAttributeValue("id");
    18             String name=student.getChildText("name");
    19             String sex=student.getChildText("sex");
    20             String age=student.getChildText("age");
    21             System.out.println("学号:"+id+" 姓名:"+name+" 年龄:"+age+" 性别: "+sex);
    22         }
    23     }
    24 }

    DOM4J

    dom4j 是一个 Java 的 XML API,类似于 jdom,用来读写 XML 文件的。dom4j 是一个非常非常优秀的 JavaXML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在 SourceForge 上找到它。在 IBM developerWorks 上面可以找到一篇文章,对主流的 Java XML API 进行的性能、功能和易用性 的评测,dom4j 无论在哪个方面都是非常出色的。如今你可以看到越来越多的 Java 软件都在使用 dom4j 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 dom4j。这是必须使用的 jar 包, Hibernate 用它来读写配置文件。

    DOM4J 官方网站:http://www.dom4j.org

     利用DOM4J生成xml

     1 package com.java1234.xml2;
     2 
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.io.FileNotFoundException;
     6 import java.io.FileOutputStream;
     7 import java.io.IOException;
     8 import java.io.UnsupportedEncodingException;
     9 
    10 import org.dom4j.Document;
    11 import org.dom4j.DocumentHelper;
    12 import org.dom4j.Element;
    13 import org.dom4j.io.OutputFormat;
    14 import org.dom4j.io.XMLWriter;
    15 public class DOM4j01 {
    16     public static void main(String[] args){
    17     Document document=    DocumentHelper.createDocument();
    18     Element studentElement=document.addElement("student");
    19         studentElement.addAttribute("id", "001");
    20         studentElement.addAttribute("aa", "xxx");
    21     Element name=studentElement.addElement("name");    
    22         name.setText("张三");
    23     Element sex=studentElement.addElement("sex");
    24         sex.setText("女");
    25     Element age=studentElement.addElement("age");
    26         age.setText("18");
    27     OutputFormat format=OutputFormat.createPrettyPrint();
    28         format.setEncoding("utf-8");
    29     try {
    30         XMLWriter writer=new XMLWriter(new FileOutputStream("src/student3.xml"), format);
    31         try {
    32             writer.write(document);
    33         } catch (IOException e) {
    34             // TODO Auto-generated catch block
    35             e.printStackTrace();
    36         }
    37         try {
    38             writer.close();
    39         } catch (IOException e) {
    40             // TODO Auto-generated catch block
    41             e.printStackTrace();
    42         }
    43     } catch (UnsupportedEncodingException e) {
    44         // TODO Auto-generated catch block
    45         e.printStackTrace();
    46     } catch (FileNotFoundException e) {
    47         // TODO Auto-generated catch block
    48         e.printStackTrace();
    49     }
    50     }
    51 }

    生成xml文件:

    1 <?xml version="1.0" encoding="utf-8"?>
    2 <student id="001" aa="xxx">
    3   <name>张三</name>
    4   <sex></sex>
    5   <age>18</age>
    6 </student>

    利用DOM4J提取文件信息:

    java代码:

     1 package com.java1234.xml2;
     2 
     3 import java.util.Iterator;
     4 
     5 import org.dom4j.Document;
     6 import org.dom4j.Element;
     7 import org.dom4j.io.SAXReader;
     8 
     9 public class DOM4j02 {
    10     public static void main(String[] args)throws Exception{
    11         SAXReader sr=new SAXReader();
    12         Document document=sr.read("src/students.xml");
    13         Element root=document.getRootElement();
    14         Iterator iter=root.elementIterator();
    15         while(iter.hasNext()){
    16             Element Studentelement=(Element) iter.next();
    17             System.out.println("学号 :"+Studentelement.attributeValue("id"));
    18             System.out.println("姓名 :"+Studentelement.elementText("name"));
    19             System.out.println("性别 :"+Studentelement.elementText("sex"));
    20             System.out.println("年龄 :"+Studentelement.elementText("age"));
    21             System.out.println("================");
    22         }
    23     }
    24 }

    xml文件

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <students>
     3     <student id="001">
     4         <name>张三</name>
     5         <sex></sex>
     6         <age>20</age>
     7     </student>
     8     <student id="002">
     9         <name>李四</name>
    10         <sex></sex>
    11         <age>18</age>
    12     </student>
    13 </students>

    结果:

  • 相关阅读:
    POJ 3672 水题......
    POJ 3279 枚举?
    STL
    241. Different Ways to Add Parentheses
    282. Expression Add Operators
    169. Majority Element
    Weekly Contest 121
    927. Three Equal Parts
    910. Smallest Range II
    921. Minimum Add to Make Parentheses Valid
  • 原文地址:https://www.cnblogs.com/zyxsblogs/p/10114062.html
Copyright © 2011-2022 走看看