XML文件操作之dom4j


能夠操作xml的api還是挺多的,DOM也是可以的,不過在此記錄下dom4j的使用,感覺確實挺方便的

所需jar包官網地址:http://www.dom4j.org/dom4j-1.6.1/

 

dom4j相關的重要類和方法

 

SAXReader用於讀取外部的xml文件,實例

SAXReader reader=new SAXReader();
        
Document document=reader.read(new File("f:/test.xml"));

 

SAXReader 的read方法可以讀取外部的xml文件,返回一個Document 對象

 

Document,dom4j的一個文檔對象,用於操作xml文檔的結構,可通過調用它的getRootElement()方法獲取根元素Element對象

 

Document document=reader.read(new File("f:/test.xml"));
            
Element root=document.getRootElement();

 

Element,元素對象,它的方法還是挺多的,是主要操作對象。方法如下:

element("ElementName"),方法可以獲取該元素標簽中的名稱為ElementName的子Element元素對象

 

Element root=document.getRootElement();
Element element=root.element("紅樓夢");

 

attribute("id") ,獲取屬性為id的Attribute對象

 

Attribute attr=element.attribute("id");

 

addElement("ElementName"),添加一個新的子Element標簽,名字為ElementName

addText(""),為element對象添加 text值

 

Element e=element.addElement("朝代");
e.addText("唐朝");

 

remove(Attribute),移除一個指定的Attribute對象

Element element=root.element("紅樓夢");
Attribute attr=element.attribute("id");
element.remove(attr);

 

addAttribute("name","value"),添加一個新的屬性

element.addAttribute("作者", "wang");

 

addCDATA("")添加一段不可解析的字符

element.addCDATA("紅樓夢是中國四大名著之一");

 

 

Attribute,屬相對象,操作屬性值,通過Element對象的Attribute("")方法獲取

 

XMLWriter,用於輸出xml到指定文件

 

OutputFormat format = OutputFormat.createPrettyPrint(); //格式化輸出文件
format.setEncoding("UTF-8");
XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("f:/test2.xml")),format);
xmlWriter.write(document);

 

實例代碼

test.xml文件如下:

 

<?xml version="1.0" encoding="UTF-8"?>  
<四大名著>  
    <西游記 id="x001">  
        <作者>吳承恩1</作者>  
        <作者>吳承恩2</作者>  
        <朝代>明朝</朝代>  
    </西游記>  
    <紅樓夢 id="x002">  
        <作者>曹雪芹</作者>  
    </紅樓夢>  
</四大名著> 

 

執行代碼如下:

package util;

import java.io.File;
import java.io.FileOutputStream;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class XmlUtil {

    public static void main(String[] args) {
        parseXml();
    }
    
    public static String parseXml(){
        String xmlResult = null;
        SAXReader reader=new SAXReader();
        
        try {
            Document document=reader.read(new File("f:/test.xml"));
            
            Element root=document.getRootElement();
            Element element=root.element("紅樓夢");
            Attribute attr=element.attribute("id");
            element.remove(attr);
            element.addAttribute("作者", "wang");
            Element e=element.addElement("朝代");
            e.addText("清朝");
            element.addCDATA("紅樓夢是中國四大名著之一");
            
            OutputFormat format = OutputFormat.createPrettyPrint();  
            format.setEncoding("UTF-8");  
            XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("f:/test2.xml")),format);
            xmlWriter.write(document);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return xmlResult;
    }
}

 

 

執行后,生成了test2.xml文件,內容如下:

 

<?xml version="1.0" encoding="UTF-8"?>

<四大名著> 
  <西游記 id="x001"> 
    <作者>吳承恩1</作者>  
    <作者>吳承恩2</作者>  
    <朝代>明朝</朝代> 
  </西游記>  
  <紅樓夢 作者="wang"> 
    <作者>曹雪芹</作者>  
    <朝代>清朝</朝代><![CDATA[紅樓夢是中國四大名住著之一]]>
  </紅樓夢> 
</四大名著>

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM