`

使用DOM4J和xpath解析XML(一)

    博客分类:
  • xml
阅读更多
books.xml:
<?xml version="1.0" encoding="UTF-8"?>
<books>
    <!--This is a test for dom4j, jakoes, 2007.7.19-->
    <book show="yes" url="lucene.net">
        <title id="456">Lucene Studing</title>
    </book>
    <book show="yes" url="dom4j.com">
        <title id="123">Dom4j Tutorials</title>
    </book>
    <book show="no" url="spring.org">
        <title id="789">Spring in Action</title>
    </book>
    <owner>O'Reilly</owner>
</books>


下面我们使用dom4j的xPath来解析:

public void parseBooks(){   
          
        SAXReader reader = new SAXReader();   
        try {   
            Document doc = reader.read("books.xml");   
            Node root = doc.selectSingleNode("/books");   
            List list = root.selectNodes("book[@url='dom4j.com']");   
              
            for(Object o:list){   
                  
                Element e = (Element) o;   
                String show=e.attributeValue("show");   
                System.out.println("show = " + show);   
            }   
             
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
    }  

public void parseBooks(){
       
        SAXReader reader = new SAXReader();
        try {
            Document doc = reader.read("books.xml");
            Node root = doc.selectSingleNode("/books");
            List list = root.selectNodes("book[@url='dom4j.com']");
           
            for(Object o:list){
               
                Element e = (Element) o;
                String show=e.attributeValue("show");
                System.out.println("show = " + show);
            }
          
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 



Document doc = reader.read("books.xml");的意思是加载XML文档,此是可以用
doc.asXML()来查看,它将打印整个xml文档。

  Node root = doc.selectSingleNode("/books");是读取刚才加载的xml文档内的books节点下的所有内容,对于本例也是整个xml文档。
  当然我们也可以加载/books下的某一个节点,如:book节点
Node root = doc.selectSingleNode("/books/book");
或:Node root = doc.selectSingleNode("/books/*");
注意:如果有多个book节点,它只会读取第一个
root.asXML()将打印:
<book show="yes" url="lucene.net">
        <title id="456">Lucene Studing</title>
</book>

  既然加载了这么多,那我怎么精确的得到我想要的节点呢,别急,看下面:
List list = root.selectNodes("book[@url='dom4j.com']");
它的意思就是读取books节点下的book节点,且book的节点的url属性为dom4j.com
为什么使用list来接收呢,如果有两个book节点,且它们的url属性都为dom4j.com,此时就封闭到list里了。

  如果想读取books下的所有book节点,可以这样:
List list = root.selectNodes("book");

  如果想读取books节点下的book节点下的title节点,可以这样:
List list2 = root.selectNodes("book[@url='dom4j.com']/title[@id='123']");

  注意:selectNodes()参数的格式:
  节点名[@属性名='属性值'],如:book[@url='dom4j.com']
  如果有多个节点,用“/”分开,如:book[@url='dom4j.com']/title[@id='123']

  最近就是读取封闭在List里的内容了,可以用Node来读取,也可以用Element来转换。
attributeValue("属性")是读取该节点的属性值
getText()是读取节点的的内容。


分享到:
评论

相关推荐

    Dom4j结合XPath解析XML文件路径表达式

    本篇文章将深入探讨如何使用Dom4j,一个流行的Java库,结合XPath来解析XML文件中的路径表达式,同时阐述相对路径和绝对路径的匹配原则。 首先,我们要了解Dom4j库。Dom4j是一个灵活且高效的处理XML的Java库,它提供...

    使用dom4j和jaxen解析xml

    - **dom4j+jaxen操作XML**:首先使用dom4j解析XML,然后通过jaxen创建XPath对象并执行查询。查询结果可以是元素、属性或其他XML节点,根据需要进行进一步处理。 例如,以下代码展示了如何使用dom4j和jaxen解析XML...

    Dom4j 、XPath解析Xml所需的jar包和dom4j API

    在Java编程中,解析XML文档通常需要借助库,如DOM4J和XPath。DOM4J是一个灵活且功能强大的开源Java XML API,它提供了XML的读取、写入、修改和遍历等功能。XPath则是W3C标准中的一个查询语言,用于在XML文档中查找...

    dom4j和xpath的jar包

    DOM4J可以加载和解析XML文档,然后利用XPath表达式进行数据检索。这种方式避免了传统遍历DOM树的低效,尤其是在大型XML文档中,XPath的查询性能优势尤为明显。 在Java项目中,通常会将DOM4J和XPath的jar包打包在...

    dom4j 和xpath

    - 解析XML:DOM4J可以通过SAX或者DOM方式解析XML文档,构建出文档对象模型。 - 访问元素:使用Element类来代表XML元素,可以通过方法如getElementById、getElementsByTagname等获取元素。 - 处理属性:Attribute...

    xml+dom4j+xpath资料

    我们可以使用DOM4J和XPath找到所有年龄: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.XPath; // 解析XML文档 Document document = DocumentHelper.parseText...

    Demo4j和XPath解析XML的文件路径表达式(ZVON.org - X 路径教程)

    本教程将重点讨论如何使用Java库Demo4j与XPath一起工作,以解析XML文件中的路径表达式。 首先,我们需要理解XPath的基本概念。XPath使用路径表达式来选取XML文档中的节点,这些路径表达式类似于文件系统中的路径。...

    dom4j和xpath必备jar包

    例如,通过DOM4J解析XML文档,然后使用XPath表达式来快速定位到特定的元素或属性,从而进行读取或修改。这对于处理大型XML文档或者需要频繁查询XML数据的场景尤其有用。 在实际应用中,"dom4j和xpath必备jar包"通常...

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    分别使用DOM和DOM4j解析XML文件

    本篇文章将详细介绍如何使用DOM(Document Object Model)和DOM4j这两种流行的方法来解析XML文件。 首先,DOM是一种标准的W3C推荐的解析XML的方法,它将整个XML文档加载到内存中,形成一个树形结构,便于程序进行...

    dom4j---xml解析jar包

    在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行的、功能强大的开放源代码库。这个库不仅简化了XML处理,还提供了XPath和XSLT的支持,使其成为Java开发者处理XML的首选工具之一。 **...

    dom4j及xpath jar包

    使用DOM4J解析XML的基本步骤如下: 1. 加载XML文件:`Document document = DocumentHelper.parseText(xmlString);` 或 `File file = new File("path_to_xml"); Document document = DocumentHelper.parseText(file)...

    使用dom4j 和本地dom 解析xml 文件

    在压缩包文件"复件 dom"中,可能包含了示例代码或教程,用于演示如何使用DOM4J和本地DOM解析XML文件。通过查看这些文件,你可以更深入地了解两种方法的具体实现,并在实际项目中选择合适的方式处理XML数据。 总结来...

    Dom,Sax,Xpath解析XML实例

    以上就是DOM、SAX和XPath解析XML的基本知识和实例应用。通过这些技术,开发者可以根据实际需求选择最适合的方式来处理XML文档。在实际项目中,这三种解析方法都有其适用场景,理解它们的工作原理和优缺点,将有助于...

    DOM4J_xpath

    **DOM4J**是一款由dom4j.org开发的开源XML解析库,专为Java平台设计,它不仅支持DOM和SAX这两种标准的XML解析方式,还兼容JAXP(Java API for XML Processing)。DOM4J以其简洁易用而闻名,只要对基本的XML-DOM模型...

    dom4j中xpath的使用

    下面是一个简单的示例,展示如何使用DOM4J和XPath找到XML文档中的特定元素: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Node; import org.dom4j.XPath; // 创建XML...

Global site tag (gtag.js) - Google Analytics