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[红楼梦是中国四大名住著之一]]>
  </红楼梦> 
</四大名著>

 

 

 

 

posted @ 2016-08-30 18:25  冰封绝恋  阅读(2081)  评论(0编辑  收藏  举报