要用dom4j解析的带命名空间的xml文档如下:
---myXML.xml
引用
<?xml version="1.0" encoding="UTF-8"?>
<MyXML xmlns="http://www.ttt.com/ttt-TrdInfo-1-0" xmlns:x="http://www.ttt.com/ttt/metadata.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="res286.xsd">
<Hdr ReqId="001" Tid="1002" Cid="500" user="cuishen" Mname="supermarket" pwd="543200210"/>
<Car Flg="T" Cod="ccc" Door="kkk" mktId="b01">
<Key KeyID="t01"/>
</Car>
</MyXML>
解析上面xml文件的java文件如下:
--ReadMyXML.java
引用
import java.io.File;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.XPath;
import org.dom4j.Attribute;
import org.dom4j.io.SAXReader;
import org.dom4j.DocumentException;
public class ReadMyXML{
public static void main(String args[]){
File xmlFile = new File("c:/myXML.xml");
SAXReader xmlReader = new SAXReader();
try{
Document document = xmlReader.read(xmlFile);
/*测试代码1
Attribute valueAttribute = (Attribute)document.selectSingleNode("//MyXML/Hdr/@ReqId");
System.out.println(valueAttribute.getText());
*/
///*测试代码2 xml的命名空间问题
HashMap xmlMap = new HashMap();
xmlMap.put("mo","http://www.ttt.com/ttt-TrdInfo-1-0");
xmlMap.put("x","http://www.ttt.com/ttt/metadata.xsd");
xmlMap.put("xsi","http://www.w3.org/2001/XMLSchema-instance");
XPath x = document.createXPath("//mo:MyXML/Hdr/@ReqId");
x.setNamespaceURIs(xmlMap);
Attribute valueAttribute = (Attribute)x.selectSingleNode(document);
System.out.println(valueAttribute.getText());
//*/
}catch(DocumentException e){
e.printStackTrace();
}
}
}
经过本人测试发现,使用dom4j的测试代码1和2都无法解析xml文件,就是因为这个xml文件带有命名空间,希望大家讨论讨论,找到解决dom4j解析带命名空间的xml文件的问题的途径!
分享到:
相关推荐
在处理带有命名空间的XML文件时,DOM4J库显得尤为重要,因为XML命名空间是XML规范中一个关键的概念,用于避免元素名称的冲突。 XML命名空间的引入是为了在一个文档中使用来自不同来源的元素和属性。它们通过URI...
12. **Node**: 为DOM4J中的所有XML节点提供一个多态接口,包括`Element`、`Attribute`、`Comment`等,简化了节点类型的处理。 13. **NodeFilter**: 定义了节点过滤器的行为,可以在遍历节点时应用条件筛选。 14. **...
在DOM4J中解析XML并处理命名空间,我们可以遵循以下步骤: 1. **创建SAXReader对象**:这是DOM4J用来读取XML文档的核心类。通过实例化SAXReader,我们可以配置解析器的行为,比如是否处理命名空间。 ```java ...
在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...
6. **Namespace支持**:DOM4J提供了对XML命名空间的全面支持,可以方便地处理包含命名空间的XML文档。 7. **DocumentType支持**:对于包含DOCTYPE声明的XML文档,DOM4J可以处理这些声明,并提供对应的DocumentType...
【标题】"DOM4J格式化XML"是一个关于XML处理的专题,主要聚焦于使用DOM4J库对XML文档进行格式化的技术。DOM4J是一个非常流行的Java XML API,它提供了丰富的功能,包括读取、写入、修改以及操作XML文档。在XML处理中...
### Dom4J生成XML的完整方法详解 在Java开发领域,处理XML文档是常见的需求之一。Dom4J作为一款优秀的Java XML API,...掌握以上知识点,开发者即可熟练运用Dom4J生成复杂的XML文档,满足项目中对XML数据处理的需求。
DOM4J是Java环境中一个强大、灵活的XML处理库,它提供了XML的读取、写入、解析和操作的能力。本篇文章将深入探讨如何利用DOM4J库来实现XSD对XML文档的校验,以确保XML文件符合预先设定的数据结构规则。 首先,理解...
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...
DOM4J是Java中一个非常强大的XML处理库,它提供了丰富的API来操作XML文档,如读取、写入、修改以及查询XML。本教程将深入探讨XML DOM4J解析的相关知识点。 一、DOM4J基本概念 DOM4J是一种灵活的Java API,其设计...
DOM4J不仅提供了基本的XML操作,还支持命名空间、事件处理、DTD和XML Schema验证等功能,是Java开发中处理XML的强大工具。学习和掌握DOM4J,能够极大地提高开发效率,特别是在需要频繁处理XML数据的场景下。
DOM4J这个名字中的“DOM”代表文档对象模型(Document Object Model),这是一种标准的API,用于在Java中处理XML;而“4J”则暗示它是为Java平台设计的。这个库的出现是为了弥补Java标准库中DOM和SAX解析器的不足,...
DOM4J提供了对命名空间的完整支持,方便处理这类问题。 5. **文档转换**:DOM4J可以将XML文档转换为其他格式,如Java对象、HTML、DOM或SAX事件。 6. **集成其他技术**:DOM4J与许多其他Java库如JAXB(Java API for...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而直观的方式来解析、创建、修改和操作XML数据。在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你...
DOM4J不仅兼容DOM和SAX,还提供了额外的功能,如自动命名空间处理、文档验证等。 DOM4J的一些特点包括: - **轻量级**:DOM4J相比标准的DOM实现更加轻量,消耗更少的内存。 - **易用性**:DOM4J提供了一套直观且...
4. **Namespace**: DOM4J提供了对命名空间的支持,允许在XML文档中处理具有相同标签但来自不同命名空间的元素。 5. **XPath**: DOM4J支持XPath表达式,这是一个强大的查询语言,可用于在XML文档中查找特定的元素、...