一聚教程网:一个值得你收藏的教程网站

热门教程

java的xml api接口dom4j一简单例子

时间:2022-06-29 02:52:22 编辑:袖梨 来源:一聚教程网

dom4j感觉有点像js了我们来看一个关于dom4j的一些基本的用法吧。

基本用法

1.获取文档的根节点.
Element rootElm = document.getRootElement();
2.取得某节点的单个子节点.
Element memberElm=root.element("member");// "member"是节点名
3.取得节点的文字
String text=memberElm.getText();
也可以用:
String text=root.elementText("name");这个是取得根节点下的name字节点的文字.

4.取得某节点下名为"member"的所有字节点并进行遍历.
List nodes = rootElm.elements("member");

for (Iterator it = nodes.iterator(); it.hasNext();) {
   Element elm = (Element) it.next();
   // do something
}
5.对某节点下的所有子节点进行遍历.
            for(Iterator it=root.elementIterator();it.hasNext();){
                Element element = (Element) it.next();
                // do something
            }
6.在某节点下添加子节点.
Element ageElm = newMemberElm.addElement("age");
7.设置节点文字.
ageElm.setText("29");
8.删除某节点.
parentElm.remove(childElm);// childElm是待删除的节点,parentElm是其父节点

在IBM developerWorks上面还可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,所以可以知道dom4j无论在哪个方面都是非常出色的。如今可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这已经是必须使用的jar包, Hibernate也用它来读写配置文件。

例子,读写xml

package com.test.transport.service;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class XMLService {
    public static Logger log = Logger.getLogger(XMLService.class);
    public Document getDocument(){
        Document doc = DocumentHelper.createDocument();
        doc.addComment("a simple demo ");
        Element root = doc.addElement("Persons");
        Element p1 = root.addElement("Person");
        p1.addAttribute("name", "xiaohei");
        p1.addAttribute("age", "20");
        p1.addAttribute("sex", "male");
        Element p2 = root.addElement("Person");
        p2.addAttribute("name", "xiaobai");
        p2.addAttribute("age", "21");
        p2.addAttribute("sex", "female");
        return doc;
    }
    public void saveDocument(Document doc,String filepath){
        OutputFormat format = OutputFormat.createPrettyPrint();
        XMLWriter writer = null;
        try {
            writer = new XMLWriter(new FileWriter(new File(filepath)), format);
            writer.write(doc);
            writer.flush();
            writer.close();
        } catch (IOException e) {
            log.error("文件错误");
            e.printStackTrace();
        }
    }
    public static void main(String args[]){
        XMLService service = new XMLService();
        Document doc = service.getDocument();
        service.saveDocument(doc, "demo.xml");
    }
}

2、增加修改方法

package com.test.transport.service;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class XMLService {
    public static Logger log = Logger.getLogger(XMLService.class);
    public Document getDocument(){
        Document doc = DocumentHelper.createDocument();
        doc.addComment("a simple demo ");
        Element root = doc.addElement("Persons");
        Element p1 = root.addElement("Person");
        p1.addAttribute("name", "xiaohei");
        p1.addAttribute("age", "20");
        p1.addAttribute("sex", "male");
        Element p2 = root.addElement("Person");
        p2.addAttribute("name", "xiaobai");
        p2.addAttribute("age", "21");
        p2.addAttribute("sex", "female");
        return doc;
    }
    public void saveDocument(Document doc,String filepath){
        OutputFormat format = OutputFormat.createPrettyPrint();
        XMLWriter writer = null;
        try {
            writer = new XMLWriter(new FileWriter(new File(filepath)), format);
            writer.write(doc);
            writer.flush();
            writer.close();
        } catch (IOException e) {
            log.error("文件错误");
            e.printStackTrace();
        }
    }
    public Document editDocument(File inputFile){
        SAXReader saxReader = new SAXReader();
        Document doc = null;
        try {
            doc = saxReader.read(inputFile);
        } catch (DocumentException e) {
            log.error("读取文件错误");
            e.printStackTrace();
        }
        List list = doc.selectNodes("//Persons/Person/@name");
        Iterator iterator = list.iterator();
        while(iterator.hasNext()){
            Attribute attribute = iterator.next();
            if(attribute.getValue().endsWith("xiaohei")){
                attribute.setValue("zhaodaoxiaohei");
            }
        }
        List list2 = doc.selectNodes("//Persons/Person");
        Iterator iterator2 = list2.iterator();
        while (iterator2.hasNext()) {
            Element element = iterator2.next();
            element.addText("5");
            if(element.attributeValue("name").equals("xiaobai")){
                element.addElement("grade").addText("3");
            }
        }
        return doc;
    }
    public static void main(String args[]){
        XMLService service = new XMLService();
        Document doc = service.getDocument();
        service.saveDocument(doc, "demo.xml");
       
        Document document = service.editDocument(new File("demo.xml"));
        service.saveDocument(document, "demo.xml");
    }
}

热门栏目