歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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文檔:

<?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>

文件目錄如圖所示:

Copyright © Linux教程網 All Rights Reserved