`
iuottp
  • 浏览: 169657 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

dom4j 中selectNodes选取节点排序问题

    博客分类:
  • JAVA
XML 
阅读更多

问题描述:

      在dom4j中可以通过xpath过滤xml数据中的节点,并且可以进行排序。调用方法有两种:

     

      方法一:org.dom4j.XPath   

      selectNodes(Object context, XPath sortXPath)
           selectNodes evaluates the XPath expression on the given Nodeor Listof Nodes and returns the result as a List of Node s sorted by the sort XPath expression.

   

      方法二:org.dom4j.Node

      selectNodes(String xpathExpression, String comparisonXPathExpression)
           selectNodes evaluates an XPath expression then sorts the results using a secondary XPath expression Returns a sorted List of Node instances.

 

解决方法:

      扩展DefaultXPath自己实现了一个NumberXPath类,源码如下:

      

package org.dom4j.xpath;

import org.dom4j.Node;

public class NumberXPath extends DefaultXPath{
    public NumberXPath(String text){
        super(text);
    }
    protected Object getCompareNumberValue(Node node) {
        return numberValueOf(node);
    }
}

    调用方法:

   

String srcXML = "...xml文字...";   //参见xml文件
Document doc = DocumentHelper.parseText(srcXML);
List list = doc.selectNodes("doc/person/adds/add[@ID]");

org.dom4j.XPath path =new NumberXPath("@ID");
path.sort(list);

//查看结果
Iterator i1 = list.iterator();
while(i1.hasNext()){
    Element element = (Element) i1.next();
    System.out.println(element.attributeValue("ID"));
}

 

   XML文件:

   

<?xml version="1.0" encoding="GBK"?>
<doc>
    <person>
        <name>某人</name>
        <adds>            
            <add ID="01">
                <BS>10002</BS>
                <note>西安市太白路</note>
            </add>
            <add ID="02">
                <BS>10002</BS>
                <note>空ID节点啊</note>
            </add>
            <add ID="12">
                <BS>10002</BS>
                <note>空ID节点啊</note>
            </add>
            <add>
	<BS xmlns="10001"/>
                <note>西安市太白路2</note>
            </add>
         </adds>
    </person>
</doc>

  

分享到:
评论
2 楼 yanxiaoyu 2012-05-21  
String srcXML = "...xml文字...";  这个到底是什么参数吗?
1 楼 510372845 2012-03-05  
学习了。谢谢。

相关推荐

    dom4j解析xml

    #### 四、XPath表达式在DOM4J中的应用 DOM4J支持XPath表达式来查询XML文档中的节点,XPath表达式是查询XML文档的一种强大工具,能够精确地定位到文档中的任意节点。 - **基本的XPath表达式**: - `/AAA/BBB/CCC`...

    dom4j中XPath用法

    **DOM4J中XPath用法详解** XPath,全称为XML Path Language,是一种在XML文档中查找信息的语言。它被设计用来方便地选取XML文档中的节点,包括元素、属性、文本等。DOM4J是一个非常流行的Java XML API,它提供了一...

    DOM4J jar包

    在Java开发中,DOM4J常被用于读取、写入、更新和删除XML文档,极大地简化了与XML相关的任务。 XML(可扩展标记语言)是一种数据表示格式,广泛应用于数据交换、配置文件和Web服务等场景。DOM4J库通过提供DOM、SAX和...

    DOM4J_xpath

    12. **Node**: 为DOM4J中所有的XML节点定义多态行为。 13. **NodeFilter**: 定义在DOM4J节点中产生的一个过滤器或谓词的行为。 14. **ProcessingInstruction**: 定义XML处理指令。 15. **Text**: 定义XML文本节点。 ...

    dom4j 和xpath

    DOM4J和XPath是XML处理领域中的两个重要概念,它们在Java编程中有着广泛的应用。DOM4J是一款灵活且功能强大的Java库,主要用于处理XML文档,而XPath是一种在XML文档中查找信息的语言。 DOM4J简介: DOM4J是基于Java...

    dom4j-1.6.1.jar

    - **XPath支持**:DOM4J内置了XPath引擎,可以方便地通过XPath表达式选取XML文档中的元素,提高了代码的可读性和效率。 - **XML文档操作**:DOM4J提供了丰富的API,允许开发者创建、修改和删除XML元素、属性和文本...

    xpath补丁包+dom4j2.0.3.zip

    例如,通过DOM4J的Element对象调用`selectNodes()`方法,传入XPath表达式,就可以获取到匹配的节点列表。 此外,DOM4J还支持事件驱动的处理方式(SAX),以及流式处理(StAX),适合处理大型XML文档,避免内存消耗...

    dom4j相关包,资源

    核心接口和类是DOM4J的核心组成部分,其中`Element`代表XML的元素,`Attribute`表示元素的属性,`Document`是整个XML文档的根节点,`DocumentType`表示文档类型声明,而`ElementPath`用于XPath查询。这些类提供了...

    dom4j 工具类

    - **遍历和迭代**:DOM4J提供迭代器接口,如`NodeIterator`和`ElementIterator`,方便遍历文档中的节点。 ```java NodeIterator iter = new NodeIterator(document); while (iter.hasNext()) { Node node = iter...

    Dom4j应用中常用方法总结.doc

    【Dom4j应用中常用方法总结】 Dom4j是一个强大的Java库,用于处理XML文档,提供了灵活且易于使用的API来创建、修改和操作XML结构。本文主要总结了在Dom4j应用中的常用方法,帮助开发者更好地理解和使用Dom4j。 **...

    dom4j解析案例

    2. **节点操作**:在DOM4J中,XML文档被表示为一系列相互关联的节点,包括元素节点、文本节点、属性节点等。我们可以使用`Element`类来代表XML的元素,通过`selectNodes()`或`element()`方法选取特定的节点。 3. **...

    dom4j-1.6.1.zip

    至于提供的"dom4j-1.6.1.zip"压缩包,它包含了DOM4J的1.6.1版本,这个版本与对应的Jaxen版本兼容,可以确保你在项目中使用XPath时不会有版本冲突问题。解压后,你可以找到DOM4J的JAR文件,将其添加到项目的类路径中...

    Dom4j学习教程+API

    Dom4j内置了XPath支持,允许通过简洁的表达式选取XML文档中的特定部分。例如,`element.selectNodes("//book")`可以选取所有`&lt;book&gt;`元素。 **5. Dom4j API详解** - **Element类**:代表XML文档中的元素,提供添加...

    Dom4j封装和解析

    在Java中,处理XML的库有很多,其中Dom4j是一个功能强大且灵活的库,它提供了对XML的全面支持,包括读取、写入、修改以及XPath查询等操作。本文将深入探讨Dom4j库的封装与解析,并结合实际案例进行讲解。 首先,让...

    xml+dom4j+xpath资料

    XPath使用路径表达式来选取节点,这些表达式类似于文件系统的路径,可以定位到XML文档中的特定节点,如元素、属性、文本等。XPath提供了一系列函数和轴,如`//`, `.//`, `/`, `@`等,帮助开发者更加方便地选取数据。...

    dom4j各种中文api解析

    - XPath查询:如`XPath.selectNodes()`选取节点集合,`XPath.valueOf()`获取单个节点或值。 **资源文件解析** - **Dom4j_教程网页收集.chm**: 包含一系列关于dom4j的网页教程,可以离线查阅。 - **dom4j.CHM**: 另...

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

    在Dom4j中,我们可以使用`org.dom4j.XPath`类来创建XPath对象,并通过`selectNodes()`或`selectSingleNode()`方法来执行路径表达式,获取XML文档中的节点集合或单个节点。以下是一个简单的示例: ```java import ...

    java dom4j解析xml

    - DOM4J支持XPath表达式来快速定位XML中的节点。例如,`XPathFactory factory = XPathFactory.instance(); XPath xpath = factory.newXPath(); Node node = xpath.selectSingleNode(document, "/root/element")`...

    dom4j-dom4j_1_6_1.tar.gz

    4. **全面支持 XPath**:DOM4J 集成了 XPath 表达式引擎,可以直接通过 XPath 查询 XML 文档中的节点,大大简化了数据查找和操作。 5. **支持 SAX 和 DOM**:DOM4J 不仅支持基于事件的 SAX 解析,还支持传统的 DOM ...

    dom4j-1.6.1.jar + jaxen-1.1.1.jar

    DOM4J和Jaxen是两个在Java编程中用于XML处理的重要库,它们在解析、操作和查询XML文档方面发挥着关键作用。 DOM4J是一个非常灵活且功能强大的开源XML库,它为Java开发者提供了丰富的API来处理XML文档。DOM4J支持...

Global site tag (gtag.js) - Google Analytics