ZYXS

生命不息,代码不止!
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>

结果:

 

posted on 2018-12-13 14:59  ZYXS  阅读(316)  评论(0编辑  收藏  举报