java对xml节点属性的增删改查

时间:2022-10-20 22:13:33

 个人博客地址:https://www.vastyun.com

学习本文之前请先看我的另一篇文章JAVA对XML节点的操作可以对XML操作有更好的了解。

 1 package vastsum;
 2 
 3 import java.io.File;
 4 import java.io.FileWriter;
 5 import java.util.Iterator;
 6 
 7 import org.dom4j.Attribute;
 8 import org.dom4j.Document;
 9 import org.dom4j.Element;
10 import org.dom4j.io.SAXReader;
11 import org.dom4j.io.XMLWriter;
12 import org.junit.Test;
13 
14 /**
15  * 使用dom4j操作xml
16  * 对xml属性操作
17  * 时间:2016年10月2号
18  * 操作xml文件为contact.xml
19  * 本文件文件名为:attrDemo.java
20  * @author shutu008
21  *
22  */
23 public class attrDemo{
24     @Test
25     public void exmple() throws Exception{
26         //读取XML文件,获得document对象
27         SAXReader reader = new SAXReader();
28         Document document = reader.read(new File("./src/contact.xml"));
29         
30         //获得某个节点的属性对象
31         Element rootElem = document.getRootElement();
32         //获取根节点属性对象
33         Attribute rootAttr = rootElem.attribute("id");    
34         
35         //获取指定节点属性对象
36         Element contactElem = rootElem.element("contact");
37         Attribute contactAttr = contactElem.attribute("id");
38         
39         //遍历某个节点的所有属性
40         for (Iterator it = contactElem.attributeIterator();it.hasNext();){
41             Attribute  conAttr= (Attribute)it.next();
42             String conTxt = conAttr.getValue();
43             String conAttrName = conAttr.getName();
44             System.out.println(conAttrName+" = "+conTxt);
45         }
46         //设置某节点的属性和值
47         contactElem.addAttribute("name", "zhangsan");
48         
49         //设置(更改)某属性的值
50         Attribute nameAttr = contactElem.attribute("name");
51         nameAttr.setValue("lisi");
52         
53         //删除某节点的指定属性
54         contactElem.remove(nameAttr);
55         //将某节点的属性和值写入xml文档中
56         XMLWriter writer = new XMLWriter(new FileWriter("./src/contact.xml"));
57         writer.write(document);
58         writer.close();
59         
60         /**
61          * 如果文档中有中文需要设置字符编码
62          * 用如下语句:
63          * OutputFormat format = OutputFormat.createPrettyPrint();
64          * format.setEncoding("GBK");
65          * XMLWriter writer = new XMLWriter(new FileWriter("./src/contact.xml"),format);
66          */
67         //获取指定对象的属性名
68         System.out.println(rootAttr.getName());
69         System.out.println(contactAttr.getName());
70         //获取指定对象的属性值
71         System.out.println(contactAttr.getValue());
72         System.out.println(rootAttr.getValue());
73     }
74 }

备注:以上例子代码可以直接运行。可以使用Junit 4调节本例子的代码。

以下是XML文档:

java对xml节点属性的增删改查java对xml节点属性的增删改查
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <contactList id="0">
 3     <contact id="001" class="style">
 4         <name>张三</name>
 5         <age>20</age>
 6         <phone>134222223333</phone>
 7         <email>zhangsan@qq.com</email>
 8         <qq>432221111</qq>
 9     </contact>
10     <contact id="002">
11         <name>李四</name>
12         <age>20</age>
13         <phone>134222225555</phone>
14         <email>lisi@qq.com</email>
15         <qq>432222222</qq>
16     </contact>
17     <contactTwo>
18         <name>王五</name>
19         <age>32</age>
20         <phone>465431341</phone>
21         <emali>af@qq.com</emali>
22         <qq>46164694</qq>
23     </contactTwo>
24     <test>测试</test>
25     <test>其他用途</test>
26 </contactList>
View Code

文件目录如图所示:

java对xml节点属性的增删改查