当我们解析xml的时候,如果该xml没有带命名空间,那么很好解析,直接用dom4j的selectNodes(XPath表达式)既可以了。但是如果命名空间那么则会返回空。下面为大家介绍三种方法来解决:
第一种:
<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>
<list-property name="cssStyleSheets">
<structure>
<property name="fileName">D: eport.css</property>
</structure>
</list-property>
</report>
第一个方案.设置你的xpath的命名空间setNamespaceURI
public class TransferXML {
public static void main(String[] args) throws Exception//design:list-property");//填写XPath表达式
x.setNamespaceURIs(map);//设置命名空间
List nodelist = x.selectNodes(document);//取出符合规定的集合
System.out.println(nodelist.size());
}
}
public static void main(String[] args) throws Exception//design:list-property");//填写XPath表达式
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");//填充map
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");//用XPath选取节点
System.out.println(tmp.size());
}
}
public static void main(String[] args) throws Exception{
Map map = new HashMap();
map.put("design","http://www.eclipse.org/birt/2005/design");//填充map
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");//用XPath选取节点
System.out.println(tmp.size());
}
}
详细请参考:http://blog.sina.com.cn/s/blog_4bf2e5550100sbb7.html
相关推荐
在处理带有命名空间的XML文件时,DOM4J库显得尤为重要,因为XML命名空间是XML规范中一个关键的概念,用于避免元素名称的冲突。 XML命名空间的引入是为了在一个文档中使用来自不同来源的元素和属性。它们通过URI...
DOM解析器的优点在于提供了一种灵活且易于使用的API,可以方便地进行添加、删除和修改XML内容。以下是一个DOM解析的例子: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document...
5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析方式适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 6. **Namespace支持**:DOM4J提供了对XML命名空间的全面...
**DOM4J解析XML** DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效且功能丰富的API,使得XML的读取、创建、修改和查询变得简单易行。DOM4J的主要特点包括对XPath的支持、事件驱动的解析、以及与...
1. **DOM4J API**:DOM4J提供了一组直观的类和接口来操作XML文档,如`Element`代表XML元素,`Attribute`代表属性,`Document`表示整个XML文档,还有`Namespace`处理命名空间。通过这些API,开发者可以轻松地创建、...
**DOM4J解析XML实例详解** 在Java编程中,处理XML文档是一项常见的任务。DOM4J是一个非常流行的、强大的Java XML API,它提供了灵活且高效的方式来解析、创建、修改XML文档。本文将深入探讨如何使用DOM4J进行XML...
4. **Namespace**: DOM4J提供了对命名空间的支持,允许在XML文档中处理具有相同标签但来自不同命名空间的元素。 5. **XPath**: DOM4J支持XPath表达式,这是一个强大的查询语言,可用于在XML文档中查找特定的元素、...
了解DOM4J库的其他功能,如XPath查询、命名空间处理等,可以帮助更高效地处理复杂SOAP消息。 总之,DOM4J是处理XML文档的强大工具,包括解析和操作SOAP消息。通过熟悉其API和XML结构,开发者可以轻松地从SOAP消息中...
在使用DOM4J解析XML文件之前,需要导入DOM4J相关的jar包,通常版本为1.6.1。 #### DOM4J常用对象 - **SAXReader**: 用于读取XML文件,并将其转换成Document对象。 - **Document**: XML文档对象树,类似于HTML文档...
5. **命名空间(Namespace)**: 在处理包含命名空间的XML时,Dom4j能有效地管理这些命名空间。 **二、Dom4j解析XML** 1. **读取XML文件**: 使用`DocumentBuilderFactory`创建`DocumentBuilder`,然后通过`parse()`...
4. **命名空间管理**:XML中的命名空间用于区分相同标签名但来自不同源的情况。DOM4J提供了对命名空间的完整支持,方便处理这类问题。 5. **文档转换**:DOM4J可以将XML文档转换为其他格式,如Java对象、HTML、DOM...
本篇文章将深入探讨在解析XML时,如何处理包含命名空间的情况,特别关注使用DOM4J库的方法。 DOM4J是Java社区中广泛使用的XML处理库,它提供了灵活且强大的API来读取、写入、修改和操作XML文档。在处理带有命名空间...
DOM解析器将整个XML文档加载到内存中,创建一个树形结构,允许开发者通过节点遍历整个文档。虽然DOM提供了一种方便的方式来访问和修改XML文档的任何部分,但这种方法对内存的需求较大,不适合处理大型XML文件。 **...
在本实例中,我们将深入探讨如何使用DOM4J解析XML,并利用这些数据连接Oracle数据库进行数据操作。 首先,让我们了解DOM4J的基本用法。DOM4J的主要类包括`Document`、`Element`、`Attribute`和`Namespace`。`...
DOM4J不仅兼容DOM和SAX,还提供了额外的功能,如自动命名空间处理、文档验证等。 DOM4J的一些特点包括: - **轻量级**:DOM4J相比标准的DOM实现更加轻量,消耗更少的内存。 - **易用性**:DOM4J提供了一套直观且...
1. **解析XML文档**:DOM4J提供了多种解析器,如SAX和DOM解析器,可以高效地将XML文档转换为树形结构。通过这种方式,开发者可以方便地遍历和访问XML元素。 2. **构建XML文档**:DOM4J允许动态创建XML文档,可以...
为了更好地利用DOM4J,开发者还需要掌握一些基本的XML知识,如XML元素、属性、命名空间以及XPath语法。 总结来说,这个压缩包提供了DOM4J解析XML文件所需的关键组件,包括DOM4J本身、XPath处理器Jaxen以及XML解析器...
DOM4J是Java中一个非常优秀的XML处理库,它提供了丰富的API,使得操作XML文件变得简单而高效。在本文中,我们将详细探讨如何利用DOM4J库来读取XML文件。 1. **安装DOM4J** 要使用DOM4J,首先需要将其添加到你的...
在DOM解析XML时,整个XML文件会被读入内存,并构建一个树形结构,这在处理大文件时可能会导致内存溢出。而SAX解析器则采取不同的策略,它以事件的形式逐个处理XML元素,只在需要时存储少量信息,因此对于大文件来说...
这个“dom4j解析xml例子”压缩包应该包含了一些示例代码、帮助文档和使用说明,旨在帮助初学者快速理解和应用DOM4J。 在XML解析领域,DOM(Document Object Model)是一种将XML文档转换为内存对象树的方法。DOM4J是...