學習本文之前請先看我的另一篇文章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文檔:
<?xml version="1.0" encoding="UTF-8"?>
<contactList id="0">
<contact id="001" class="style">
<name>張三</name>
<age>20</age>
<phone>134222223333</phone>
<email>[email protected]</email>
<qq>432221111</qq>
</contact>
<contact id="002">
<name>李四</name>
<age>20</age>
<phone>134222225555</phone>
<email>[email protected]</email>
<qq>432222222</qq>
</contact>
<contactTwo>
<name>王五</name>
<age>32</age>
<phone>465431341</phone>
<emali>[email protected]</emali>
<qq>46164694</qq>
</contactTwo>
<test>測試</test>
<test>其他用途</test>
</contactList>
文件目錄如圖所示: