`

dom4j 的一些用法

 
阅读更多
使用 domj4 API 创建与修改 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格式文本信息:
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
    <book>
        <title lang="eng">Harry Potter</title>
<price>29.99</price>
    </book>
    <book>
<title lang="eng">Learning XML</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.XMLWriter xmlWriter = new org.dom4j.io.XMLWriter(
  new FileOutputStream(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);
分享到:
评论

相关推荐

    Dom4j的用法

    由于其易于使用的接口和Java集合框架的集成,Dom4j广泛应用于需要处理XML文档的Java应用程序中。首先,Dom4j的应用非常简单,只需要对XML-DOM模型有基本的了解就能上手使用。 Dom4j的接口大部分定义在org.dom4j包中...

    dom4j_dom4j1.6.1安装包_

    DOM4J的使用方法非常直观。例如,你可以使用以下代码创建一个新的XML文档: ```java DocumentFactory factory = DocumentFactory.getInstance(); Document document = factory.createDocument(); Element root...

    dom4j详细使用用法

    #### 三、DOM4j基本使用方法 1. **读取并解析XML文档** 要读取并解析XML文档,可以使用`org.dom4j.io`包中的`SAXReader`类。`SAXReader`是一个轻量级的解析器,适用于大型文档,因为它不会一次性将整个文档加载到...

    DOM4J帮助文档及使用教程

    12. **常见问题与解决方案**:列举了一些在使用DOM4J过程中可能会遇到的问题及其解决方法。 通过阅读和实践DOM4J的帮助文档和使用教程,开发者可以全面掌握DOM4J的各种特性和用法,从而更高效地处理XML数据。这个...

    dom4j-2.1.3.zip

    "dom4j-2.1.3-javadoc.jar"文件则包含了DOM4J库的API文档,是开发者学习和使用DOM4J的重要参考资料。通过这个文件,我们可以查找类、接口、方法的详细说明,理解它们的功能和使用方式,这对于开发过程中快速定位问题...

    dom4j dom4j1.6 dom4j最新版

    其中,`dom4j-1.6.1.jar`是运行时库,包含了DOM4J的所有类和方法;`dom4j-1.6.1-sources.jar`包含了源代码,方便查看和学习;`dom4j-1.6.1.tar.gz`和`dom4j-1.6.1.zip`则是不同的压缩格式,提供了库文件的打包形式。...

    dom4j-2.0.3.zip

    DOM4J的2.0.3版本修复了一些已知问题,提升了稳定性,同时保持了对XML规范的良好支持。 二、核心概念 1. **Element**: DOM4J中的Element类代表XML文档中的元素节点,它是DOM4J中最重要的类。通过Element,我们可以...

    所有版本的dom4j工具包

    标题提到的"所有版本的dom4j工具包"表明这是一个包含多版本DOM4J库的集合,可能包括了从早期到较新的一些版本,如dom4j-1.4.jar、dom4j-1.6.1.jar和dom4j-1.5.2.jar。这些不同版本的库可能分别对应于不同的功能特性...

    dom4j-2.1.1-API文档-中英对照版.zip

    赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...

    dom4j-2.1.1-API文档-中文版.zip

    赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...

    dom4j的Java工程

    在"dom4jdemo"这个子文件夹中,很可能是包含了一个或多个Java源代码文件,演示了如何使用DOM4J进行XML操作的实例。这些代码通常会包含导入DOM4J库的语句,如`import org.dom4j.Document;`和`import org.dom4j....

    dom4j需要的包

    7. **文档处理API**:DOM4J的API设计得非常直观,例如Element接口提供了添加子元素、删除元素、查找元素、获取属性值等方法,使得XML操作变得简单易用。 综上所述,DOM4J是一个强大且易用的XML处理工具,配合Jaxen...

    dom4j_例子,包括所有常用用法

    本文将通过一个具体的示例代码来深入探讨DOM4j的使用方法,涵盖创建、修改XML文档的常用操作。 #### 创建XML文档 在DOM4j中,创建XML文档非常直观。首先,需要导入DOM4j相关的包: ```java import org.dom4j....

    dom4j 2.1.1

    2. 性能优异:相比其他XML解析库,DOM4J在处理大规模XML文档时表现出更好的性能,因为它采用了一些优化策略,如延迟加载(lazy loading),避免一次性加载整个文档导致的内存消耗。 3. 功能强大:DOM4J不仅支持基本...

    dom4j中XPath用法

    DOM4J使用`XPathFactory`来创建`XPath`对象,然后通过`createXPath()`方法构建XPath表达式: ```java XPathFactory factory = XPathFactory.instance(); XPath xpath = factory.newXPath(); ``` **4. 执行XPath...

    dom4j完整版.zip

    压缩包中的“使用说明.txt”很可能是DOM4J的快速入门指南或API参考,它可能包含了如何导入库、创建XML文档、执行XPath查询、修改XML结构等基础用法的示例代码。对于初次使用者来说,这份文档是理解DOM4J功能和用法的...

    xml 三种解析方式dom,sax,dom4j

    在提供的压缩包中,包含了关于这三种解析方式的代码示例,你可以参考这些代码了解如何在Java环境中使用DOM、SAX和DOM4J进行XML解析。通过阅读和理解这些示例,你可以更好地掌握XML解析技术,并根据项目需求选择合适...

    使用Maven管理项目,实现DOM4j操作XML文件

    2. **创建XML文件**:使用DOM4j创建一个新的XML文件,这通常涉及到`Document`、`Element`和`Writer`的使用。例如,你可以创建一个包含根元素和子元素的XML文件。 3. **动态创建XML节点**:在已有的XML文档中动态...

Global site tag (gtag.js) - Google Analytics