ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Dom4j解析XML

2019-07-22 18:50:26  阅读:188  来源: 互联网

标签:XML xml Dom4j dom4j new Element org import 解析


1.Dom4j简介:

 

     DOM4J是 dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。

 

        DOM4J 使用起来非常简单。只要你了解基本的 XML-DOM 模型,就能使用。

 

        Dom:把整个文档作为一个对象。

 

        DOM4J 最大的特色是使用大量的接口。它的主要接口都在org.dom4j里面定义:

        

 

 

 创建xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<phoneInfo>
    <brand name="小米">
        <type name="小米8"/>
        <type name="小米9"/>
        <type name="小米MIX"/>
    </brand>
    <brand name="iPhone">
        <type name="iPhone9"/>
        <type name="iPhoneX"/>
        <type name="iPhoneXS"/>
    </brand>
    <brand name="华为">
        <type name="P20"/>
        <type name="P30"/>
        <type name="P30 pro"/>
    </brand>
</phoneInfo>
info.xml

  xml解析——查询

 1 package cn.kgc.dom4jtest;
 2 
 3 import org.dom4j.Document;
 4 import org.dom4j.Element;
 5 import org.dom4j.io.SAXReader;
 6 
 7 import java.util.Iterator;
 8 
 9 /**
10  * xml 解析
11  */
12 public class Test {
13     public static void main(String[] args) {
14         SAXReader saxReader = new SAXReader();
15         try {
16             //读取xml 文件,并生成document对象,现可通过document来操作文档
17             Document document = saxReader.read("src/info.xml");
18             //获取到文档的根节点
19             Element rootElement = document.getRootElement();
20             System.out.println("根节点的名字是"+rootElement.getName());
21             //获取子节点列表
22             Iterator it = rootElement.elementIterator();
23             while (it.hasNext()){
24                 Element fistChild = (Element) it.next();
25                 //System.out.println(fistChild.getName());
26                 //获取节点的属性值
27                 System.out.println(fistChild.attribute("name").getValue());
28                 //获取子节点的下一级节点
29                 Iterator iterator = fistChild.elementIterator();
30                 while (iterator.hasNext()){
31                     Element element = (Element) iterator.next();
32                     System.out.println("\t"+element.attributeValue("name"));
33                 }
34             }
35         } catch (Exception e) {
36             e.printStackTrace();
37         }
38     }
39 }
Test

  xml解析——添加

 1 package cn.kgc.dom4jtest;
 2 
 3 import org.dom4j.Document;
 4 import org.dom4j.Element;
 5 import org.dom4j.io.SAXReader;
 6 import org.dom4j.io.XMLWriter;
 7 
 8 import java.io.File;
 9 import java.io.FileOutputStream;
10 import java.io.OutputStream;
11 
12 /**
13  * 添加节点的操作
14  */
15 public class AddTest {
16     public static void main(String[] args) {
17         SAXReader saxReader = new SAXReader();
18         try {
19             Document document = saxReader.read("src/info.xml");
20             //获取到根节点
21             Element rootElement = document.getRootElement();
22             //添加一个子节点
23             Element brand = rootElement.addElement("brand");
24             //给当前节点添加属性
25             brand.addAttribute("name","魅族");
26             Element type = brand.addElement("type");
27             type.addAttribute("name","s16");
28             OutputStream os = new FileOutputStream(new File("src/info.xml"));
29             XMLWriter xmlWriter = new XMLWriter(os);
30             xmlWriter.write(rootElement);
31             xmlWriter.flush();
32             xmlWriter.close();
33         } catch (Exception e) {
34             e.printStackTrace();
35         }
36     }
37 }
AddTest

  xml解析——修改

 1 package cn.kgc.dom4jtest;
 2 
 3 import org.dom4j.Document;
 4 import org.dom4j.DocumentException;
 5 import org.dom4j.Element;
 6 import org.dom4j.io.SAXReader;
 7 import org.dom4j.io.XMLWriter;
 8 
 9 import java.io.*;
10 import java.util.Iterator;
11 
12 /**
13  * 节点修改测试
14  */
15 public class UpdateTest {
16     public static void main(String[] args) {
17         SAXReader saxReader = new SAXReader();
18         try {
19             Document document = saxReader.read("src/info.xml");
20             //获取根节点
21             Element rootElement = document.getRootElement();
22             //获取子节点
23             Iterator it = rootElement.elementIterator();
24             while (it.hasNext()){
25                 Element element = (Element) it.next();
26                 System.out.println(element.attributeValue("name"));
27                 if (element.attributeValue("name").equals("魅族")){
28                     Iterator iterator = element.elementIterator();
29                     while (iterator.hasNext()){
30                         Element type = (Element) iterator.next();
31                         if (type.attributeValue("name").equals("s16")){
32                             type.addAttribute("name","16 pro");
33                         }
34                     }
35                 }
36             }
37             XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(new File("src/info.xml")));
38             xmlWriter.write(document);
39             xmlWriter.flush();
40             xmlWriter.close();
41         } catch (Exception e) {
42             e.printStackTrace();
43         }
44 
45     }
46 }
UpdateTest

  xml解析——删除

 1 package cn.kgc.dom4jtest;
 2 
 3 import org.dom4j.Document;
 4 import org.dom4j.DocumentException;
 5 import org.dom4j.Element;
 6 import org.dom4j.io.SAXReader;
 7 import org.dom4j.io.XMLWriter;
 8 
 9 import java.io.File;
10 import java.io.FileOutputStream;
11 import java.util.Iterator;
12 
13 /**
14  * 删除节点
15  */
16 
17 public class DelTest {
18     public static void main(String[] args) {
19         SAXReader saxReader = new SAXReader();
20         try {
21             Document document = saxReader.read("src/info.xml");
22             Element rootElement = document.getRootElement();
23             Iterator iterator = rootElement.elementIterator();
24             while (iterator.hasNext()){
25                 Element brand = (Element) iterator.next();
26                 if(brand.attributeValue("name").equals("魅族")){
27                     //通过父节点来删除子节点
28                     brand.getParent().remove(brand);
29                 }
30             }
31             XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(new File("src/info.xml")));
32             xmlWriter.write(document);
33             xmlWriter.flush();
34             xmlWriter.close();
35         } catch (Exception e) {
36             e.printStackTrace();
37         }
38     }
39 }
DelTest

 

标签:XML,xml,Dom4j,dom4j,new,Element,org,import,解析
来源: https://www.cnblogs.com/xiaoxindada/p/11227687.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有