dom4j 的一些用法

使用domj4API创建与修改XML文档http://www.blogjava.net/tojava/archive/2005/12/20/24862.html

dom4j修改xml文件http://lengchaotian.iteye.com/blog/1873658

用dom4j修改xml(增加修改节点)http://bjyzxxds.iteye.com/blog/477226

dom4j修改节点属性及写入文件http://blog.163.com/sir_876/blog/static/1170522320107741950123/

maven:

<dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>jaxen</groupId>
            <artifactId>jaxen</artifactId>
            <version>1.1.6</version>
        </dependency>

Dom4j-XPath语法

首先给出一段XML格式文本信息:

<?xmlversion="1.0"encoding="ISO-8859-1"?>

<bookstore>

<book>

<titlelang="eng">HarryPotter</title>

<price>29.99</price>

</book>

<book>

<titlelang="eng">LearningXML</title>

<price>39.95</price>

</book>

</bookstore>

表达式描述

节点名选择所有该名称的节点集

/选择根节点

//选择当前节点下的所有节点

.选择当前节点

..选择父节点

@选择属性

示例

表达式描述

bookstore选择所有bookstore子节点

/bookstore选择根节点bookstore

bookstore/book在bookstore的子节点中选择所有名为book的节点

//book选择xml文档中所有名为book的节点

bookstore//book选择节点bookstore下的所有名为book为节点

//@lang选择所有名为lang的属性

断言

在方括号中[],用来更进一步定位选择的元素

表达式描述

/bookstore/book[1]选择根元素bookstore的book子元素中的第一个(注意:IE5以上浏览器中第一个元素是0)

/bookstore/book[last()]选择根元素bookstore的book子元素中的最后一个

/bookstore/book[last()-1]选择根元素bookstore的book子元素中的最后第二个

/bookstore/book[position()<3]选择根元素bookstore的book子元素中的前两个

//title[@lang]选择所有拥有属性lang的titile元素

//title[@lang='eng']选择所有属性值lang为eng的title元素

/bookstore/book[price>35.00]选择根元素bookstore的book子元素中那些拥有price子元素且值大于35的

/bookstore/book[price>35.00]/title选择根元素bookstore的book子元素中那些拥有price子元素且值大于35的title子元素

选择位置的节点

通配符描述

*匹配所有元素

@*匹配所有属性节点

node()匹配任何类型的节点

示例

表达式描述

/bookstore/*选择根元素bookstore的下的所有子元素

//*选择文档中所有元素

//title[@*]选择所有拥有属性的title元素

使用操作符“|”组合选择符合多个path的表达式

xpath读取

private void getAllNodes(String xml) {
        try {
            Document authtmp = DocumentHelper.parseText(xml);
            List<Element> list = authtmp.selectNodes("//sms/node");
            for (int j = 0; j < list.size(); j++) {
                Element node = (Element) list.get(j);
                nodeByNodes(node);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void nodeByNodes(Element node) {
        if (node.element("node") != null) {
            String id = node.attributeValue("id");
            String name = node.attributeValue("name");
            System.out.print(id + "-------");
            System.out.println(name);
            for (Iterator i = node.elementIterator("node"); i.hasNext();) {
                Element newNode = (Element) i.next();
                nodeByNodes(newNode);
            }
        } else {
            String id = node.attributeValue("id");
            String name = node.attributeValue("name");
            System.out.print(id + "-------");
            System.out.println(name);
        }
    }

dom4j中文乱码

http://blog.sina.com.cn/s/blog_3d25e30f0100cyzi.html

org.dom4j.io.XMLWriterxmlWriter=neworg.dom4j.io.XMLWriter(

newFileOutputStream(fileName));

dom4j读写xml文件

http://www.blogjava.net/biiau/archive/2012/08/17/231005.html

写入

import java.io.FileWriter;  
import java.io.IOException;  
  
import org.dom4j.Document;  
import org.dom4j.DocumentHelper;  
import org.dom4j.Element;  
import org.dom4j.io.OutputFormat;  
import org.dom4j.io.XMLWriter;  
  
public class DWriter {  
  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
        try {  
            XMLWriter writer = new XMLWriter(new FileWriter("src/author.xml"));  
            Document doc = createDoc();  
            writer.write(doc);  
            writer.close();  
  
            // Pretty print the document to System.out  
            // 设置了打印的格式,将读出到控制台的格式进行美化  
            OutputFormat format = OutputFormat.createPrettyPrint();  
            writer = new XMLWriter(System.out, format);  
            writer.write(doc);  
  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
    }  
  
    public static Document createDoc() {  
        Document doc = DocumentHelper.createDocument();  
        Element root = doc.addElement("root");  
        Element author1 = root.addElement("author").addAttribute("name",  
                "Kree").addAttribute("location", "UK")  
                .addText("Kree Strachan");  
        Element author2 = root.addElement("author").addAttribute("name", "King")  
                .addAttribute("location", "US").addText("King McWrirter");  
        return doc;  
    }  
}

格式化代码:

OutputFormat format = OutputFormat.createPrettyPrint();  
writer = new XMLWriter(new FileWriter(filepath), format);

相关推荐