java对xml节点属性的增删改查
个人博客地址:http://www.ijianmi.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文档:
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>
文件目录如图所示: