DOM4J读取XML

 依赖的jar包:

dom4j-1.6.1.jar 和 jaxen-1.1.6.jar

实现读取XML元素和添加元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package cn.test;
 
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
 
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;
 
/**
 * 需要两个jar包
 * dom4j-1.6.1.jar-306 KB
 * jaxen-1.1-beta-6.jar
 * @author zy
 *
 */
 
public class Dom4jTest {
     
    @Test
    public void readXML(){
        String path = "D:/Temp/users.xml";
        //创建解析器
        SAXReader reader = new SAXReader();
        try {
            //得到document
            Document doc = reader.read(path);
            //通过xpath查询得到Element
            Element ele = (Element) doc.selectSingleNode(
                    "//user[@username='scott']");
            //获取该元素的名为username的属性值
            String username = ele.attributeValue("username");
            String password = ele.attributeValue("password");
            System.out.println(username+","+password);
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
     
    @Test
    public void writeXML(){
        String path = "D:/Temp/users.xml";
        //创建解析器
                SAXReader reader = new SAXReader();
                try {
                    //得到document
                    Document doc = reader.read(path);
                    //得到根元素
                    Element root = doc.getRootElement();
                    //通过根元素创建新元素user
                    Element userEle = root.addElement("user");
                    //为userEle设置属性
                    userEle.addAttribute("username","scott");
                    userEle.addAttribute("password","tiger");
                    //设置文档格式,使用\t缩进,使用换行
                    OutputFormat format = new OutputFormat("\t",true);
                    //删除原来已有的文档的缩进和换行
                    format.setTrimText(true);
                    //创建XMLWriter
                    XMLWriter writer;
                    try {
                         writer = new XMLWriter(
                          new OutputStreamWriter(
                                  new FileOutputStream(path),"utf-8"),format);
                    //保存document对象
                        writer.write(doc);
                        writer.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                } catch (DocumentException e) {
                    e.printStackTrace();
                }
    }
 
}

  

xml

1
2
3
4
5
<?xml version="1.0" encoding="UTF-8"?>
 
<users>
    <user username="scott" password="tiger"/>
</users>

  

posted @   头痛不头痛  阅读(464)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示
主题色彩