`
ssuhvs
  • 浏览: 8641 次
  • 性别: Icon_minigender_1
  • 来自: 济南
最近访客 更多访客>>
社区版块
存档分类
最新评论

当xml中存在命名空间,三种处理办法(dom4j)

阅读更多
当xml中存在命名空间,三种处理办法(dom4j)
Posted on 2008-04-02 11:56 暴走的猪 阅读(1184) 评论(0) 编辑 收藏 所属分类: JAVA 
当你解析XML时,是否会因为命名空间的存在而不能得偿所愿呢?
.net上的解决方法我就不多说了(.net有世界上最详细的开发文档。这是我最欣赏微软的地方)
java方面,好多人推荐用dom4j处理xml,我也就说说在dom4j上处理带命名空间的xml

先说前两个方法,是从网上看来的。(来自http://blog.csdn.net/anyoneking/)摘抄如下:
xml代码example:


<report  xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.15" id="1">
    <list-property name="cssStyleSheets">
        <structure>
            <property name="fileName">D: eport.css</property>
        </structure>
    </list-property>
</report>
第一个方案.设置你的xpath的命名空间setNamespaceURIs



public class TransferXML ...{
    public static void main(String[] args) throws Exception...{
        Map map = new HashMap();
        map.put("design","http://www.eclipse.org/birt/2005/design");
        SAXReader saxReader = new SAXReader();
        File file = new File("D:\test.xml");
        Document document = saxReader.read(file);
        XPath x = document.createXPath("//design:list-property");
        x.setNamespaceURIs(map);
        List nodelist = x.selectNodes(document);
        System.out.println(nodelist.size());
    }
}
第二个解决方案:设置你的DocumentFactory()的命名空间 setXPathNamespaceURIs

public class TransferXML ...{
    public static void main(String[] args) throws Exception...{
        Map map = new HashMap();
        map.put("design","http://www.eclipse.org/birt/2005/design");
        SAXReader saxReader = new SAXReader();
        File file = new File("D:\test.xml");
        saxReader.getDocumentFactory().setXPathNamespaceURIs(map);
        Document document = saxReader.read(file);
        List tmp = document.selectNodes("//design:list-property");
        System.out.println(tmp.size());
    }
}
第三种方法:本人用的,最笨也是最通用的方法,就是不使用开发环境给你提供的一系列对象,而是用XPath语法中自带的local-name() 和 namespace-uri() 指定你要使用的节点名和命名空间。
当你遇到使用xslt来样式化xml时,就知道这个笨方法的好处了:


public class TransferXML ...{
    public static void main(String[] args) throws Exception...
        SAXReader saxReader = new SAXReader();
        File file = new File("D:\test.xml");
        Document document = saxReader.read(file);
        List tmp = document.selectNodes("//*[local-name()='report' and namespace-uri()='http://www.eclipse.org/birt/2005/design']/* [local-name()='list-property']");
        System.out.println(tmp.size());
    }
}

分享到:
评论

相关推荐

    dom4j 读取带有命名空间的xml文件

    在处理带有命名空间的XML文件时,DOM4J库显得尤为重要,因为XML命名空间是XML规范中一个关键的概念,用于避免元素名称的冲突。 XML命名空间的引入是为了在一个文档中使用来自不同来源的元素和属性。它们通过URI...

    xml内容解析,包含命名空间时需特殊处理(dom4j)

    在IT行业中,XML(eXtensible Markup Language)是一种用于标记...通过分析和运行这个文件,你可以更好地理解和实践DOM4J处理XML命名空间的方法。对于开发人员来说,理解和掌握这些知识对于处理复杂的XML数据至关重要。

    dom4j解析xml文件的压缩包

    6. **Namespace支持**:DOM4J提供了对XML命名空间的全面支持,可以方便地处理包含命名空间的XML文档。 7. **DocumentType支持**:对于包含DOCTYPE声明的XML文档,DOM4J可以处理这些声明,并提供对应的DocumentType...

    XSD使用dom4j校验XML

    需要注意的是,在实际应用中,可能还需要对XML文档进行预处理或后处理,例如添加命名空间、处理属性等。此外,DOM4J库还提供了许多其他功能,如XPath查询、XML文档的修改和创建等,这些都是处理XML数据的强大工具。 ...

    Java使用sax、dom、dom4j解析xml文档

    DOM4J是基于DOM的Java库,它提供了一种更简洁、更面向对象的方式来处理XML。DOM4J不仅具有DOM的所有功能,还增加了XPath查询、XML Schema支持和StAX集成等功能。以下是一个DOM4J解析XML的简单示例: ```java import...

    DOM4J xml解析工具

    DOM4J提供了对命名空间的完整支持,方便处理这类问题。 5. **文档转换**:DOM4J可以将XML文档转换为其他格式,如Java对象、HTML、DOM或SAX事件。 6. **集成其他技术**:DOM4J与许多其他Java库如JAXB(Java API for...

    java中dom4j读写XML

    DOM4J不仅提供了基本的XML操作,还支持命名空间、事件处理、DTD和XML Schema验证等功能,是Java开发中处理XML的强大工具。学习和掌握DOM4J,能够极大地提高开发效率,特别是在需要频繁处理XML数据的场景下。

    DOM4J 解析XML

    4. **Namespace(命名空间)**:用于解决XML文档中相同标签名的冲突问题。 5. **XPath(路径表达式)**:DOM4J支持XPath,这是一种强大的查询语言,可以用来定位XML文档中的特定节点。 6. **...

    dom4j解析XML所需jar包

    1. **DOM4J API**:DOM4J提供了一组直观的类和接口来操作XML文档,如`Element`代表XML元素,`Attribute`代表属性,`Document`表示整个XML文档,还有`Namespace`处理命名空间。通过这些API,开发者可以轻松地创建、...

    java解析XML dom4j dom4j-1.6.1.jar

    Java解析XML时,dom4j是一个非常流行的库,它提供了灵活且强大的API来处理XML文档。dom4j-1.6.1.jar是这个库的一个版本,发布于2005年,它支持XML的读取、写入、操作以及查询功能。在本文中,我们将深入探讨dom4j的...

    dom4j操作XMl例子

    DOM4J的核心类包括`Document`、`Element`、`Attribute`和`Namespace`等,它们分别代表XML文档、元素、属性和命名空间。 在`dom4jExample.java`中,首先会导入DOM4J库的相关类,如`Document`, `Element`, `...

    dom4j_dom4j1.6.1安装包_

    DOM4J 1.6.1版的API还包括对XML Schema和DTD的支持,可以处理命名空间,提供事件驱动的处理模型,以及XML文档的序列化功能。这些特性使得DOM4J成为Java开发中处理XML的强大工具。 在实际开发中,DOM4J常用于读取...

    Java用DOM4J读取XML

    DOM4J不仅兼容DOM和SAX,还提供了额外的功能,如自动命名空间处理、文档验证等。 DOM4J的一些特点包括: - **轻量级**:DOM4J相比标准的DOM实现更加轻量,消耗更少的内存。 - **易用性**:DOM4J提供了一套直观且...

    dom4j解析xml实例

    在实际开发中,根据需求,你可能需要处理更复杂的XML结构,如处理命名空间、XPath查询等。DOM4J提供了丰富的API来支持这些高级功能,使得XML处理变得更加便捷。 通过学习和实践这些基本操作,你可以熟练掌握DOM4J...

    dom4j解析xml

    4. **Namespace**: DOM4J提供了对命名空间的支持,允许在XML文档中处理具有相同标签但来自不同命名空间的元素。 5. **XPath**: DOM4J支持XPath表达式,这是一个强大的查询语言,可用于在XML文档中查找特定的元素、...

    DOM4J格式化XML

    【标题】"DOM4J格式化XML"是一个关于XML处理的专题,主要聚焦于使用DOM4J库对XML文档进行格式化的技术。DOM4J是一个非常流行的Java XML API,它提供了丰富的功能,包括读取、写入、修改以及操作XML文档。在XML处理中...

    dom4j_1.6.1.jar dom4j_2.1.0.jar

    标题提及的"dom4j_1.6.1.jar"和"dom4j_2.1.0.jar"是两个不同版本的DOM4J库的Java档案文件,DOM4J是一个非常流行的Java XML API,用于处理XML文档。这两个版本的差异在于功能、性能优化和可能存在的bug修复。描述中...

    dom4J解析XML 和jar包

    5. **命名空间处理**:对于包含命名空间的XML文档,DOM4J提供了便捷的方法来处理和操作这些命名空间。 6. **DOM4J与JAXB集成**:JAXB(Java Architecture for XML Binding)是Java提供的一个标准框架,用于在Java...

    dom4j下sax解析xml

    总结起来,dom4j库提供了DOM和SAX两种XML解析方式,而SAX解析在处理大文件时具有性能优势。通过注册事件处理器,开发者可以在解析过程中动态响应XML结构,实现灵活的数据处理。在实际工作中,选择合适的解析方法取决...

    dom4j 2.1.1

    - **Namespace**:用于处理命名空间,解决XML文档中相同标签名的冲突问题。 - **XPath**:通过XPathAPI,可以方便地根据路径表达式选取XML文档中的节点。 - **Reader/Writer**:用于读取和写入XML文件,可以是SAX...

Global site tag (gtag.js) - Google Analytics