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

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

package vastsum;
 
 import java.io.File;
 import java.io.FileWriter;
 import java.util.Iterator;
 
 import org.dom4j.Attribute;
 import org.dom4j.Document;
 import org.dom4j.Element;
 import org.dom4j.io.SAXReader;
 import org.dom4j.io.XMLWriter;
 import org.junit.Test;
 
 /**
  * 使用dom4j操作xml
  * 对xml属性操作
  * 时间:2016年10月2号
  * 操作xml文件为contact.xml
  * 本文件文件名为:attrDemo.java
  * @author shutu008
  *
  */
 public class attrDemo{
     @Test
     public void exmple() throws Exception{
         //读取XML文件,获得document对象
         SAXReader reader = new SAXReader();
         Document document = reader.read(new File("./src/contact.xml"));
         
         //获得某个节点的属性对象
         Element rootElem = document.getRootElement();
         //获取根节点属性对象
         Attribute rootAttr = rootElem.attribute("id");    
         
         //获取指定节点属性对象
         Element contactElem = rootElem.element("contact");
         Attribute contactAttr = contactElem.attribute("id");
         
         //遍历某个节点的所有属性
         for (Iterator it = contactElem.attributeIterator();it.hasNext();){
             Attribute  conAttr= (Attribute)it.next();
             String conTxt = conAttr.getValue();
             String conAttrName = conAttr.getName();
             System.out.println(conAttrName+" = "+conTxt);
         }
         //设置某节点的属性和值
         contactElem.addAttribute("name", "zhangsan");
         
         //设置(更改)某属性的值
         Attribute nameAttr = contactElem.attribute("name");
         nameAttr.setValue("lisi");
         
         //删除某节点的指定属性
         contactElem.remove(nameAttr);
         //将某节点的属性和值写入xml文档中
         XMLWriter writer = new XMLWriter(new FileWriter("./src/contact.xml"));
         writer.write(document);
         writer.close();
         
         /**
          * 如果文档中有中文需要设置字符编码
          * 用如下语句:
          * OutputFormat format = OutputFormat.createPrettyPrint();
          * format.setEncoding("GBK");
          * XMLWriter writer = new XMLWriter(new FileWriter("./src/contact.xml"),format);
          */
         //获取指定对象的属性名
         System.out.println(rootAttr.getName());
         System.out.println(contactAttr.getName());
         //获取指定对象的属性值
         System.out.println(contactAttr.getValue());
         System.out.println(rootAttr.getValue());
     }
 }

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

以下是XML文档:

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

<?xml version="1.0" encoding="UTF-8"?>
 <contactList id="0">
     <contact id="001" class="style">
         <name>张三</name>
         <age>20</age>
         <phone>134222223333</phone>
         <email>zhangsan@qq.com</email>
         <qq>432221111</qq>
     </contact>
     <contact id="002">
         <name>李四</name>
         <age>20</age>
         <phone>134222225555</phone>
         <email>lisi@qq.com</email>
         <qq>432222222</qq>
     </contact>
     <contactTwo>
         <name>王五</name>
         <age>32</age>
         <phone>465431341</phone>
         <emali>af@qq.com</emali>
         <qq>46164694</qq>
     </contactTwo>
     <test>测试</test>
     <test>其他用途</test>
 </contactList>
View Code

文件目录如图所示:

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

相关推荐