现在我有一个xml,如下
String xml = "<message id='GnIWm-10' to='jiangwan@dison-pc' from='test06@dison-pc/Smack' type='chat'><body/><thread>9dO8t1</thread><properties xmlns='http://www.jivesoftware.com/xmlns/xmpp/properties'><property><name>requestmenu</name><value type='string'/></property></properties></message>";
在网上搜索的时候,发现dom4j,可以使用如下方法:
Document doc = DocumentHelper.parseText(xml); List<org.dom4j.Element> list = doc.selectNodes(nodeName);
按照网上的说法,我能获取message 下的子节点body和thread两个,但就是无法获取到properties,它们之间的区别只是多了xmlns而已。代码如下
Document doc = DocumentHelper.parseText(xml); List<org.dom4j.Element> list doc.selectNodes("/message/body");
最后发现,dom4j本身有一个方法获取其path(getUniquePath)。我通过一层层获取其path知道了他的具体地址:
Document doc = DocumentHelper.parseText(xml); List<org.dom4j.Element> list = doc.selectNodes("/message/*[name()='properties']/*[name()='property']/*[name()='name']");
最后样例如下:
private static void selectXML() throws Exception{ String xml = "<message id='GnIWm-10' to='jiangwan@dison-pc' from='test06@dison-pc/Smack' type='chat'><body/><thread>9dO8t1</thread><properties xmlns='http://www.jivesoftware.com/xmlns/xmpp/properties'><property><name>requestmenu</name><value type='string'/></property></properties></message>"; Document doc = DocumentHelper.parseText(xml); List<org.dom4j.Element> list = doc.selectNodes("/message/*[name()='properties']/*[name()='property']/*[name()='name']"); for (org.dom4j.Element element : list) { System.out.println("name : "+ element.getName() + "->UniquePath:" + element.getUniquePath() + "->value:"+element.getTextTrim()); } }
相关推荐
在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...
在本教程中,我们将深入探讨如何使用DOM4J来执行基本的XML操作,包括添加元素、修改元素、删除元素以及获取元素节点。 1. **添加元素节点** 在DOM4J中,添加元素节点通常涉及创建一个新的`Element`对象,然后将其...
4. **XML Schema验证**:DOM4J可以对XML文档进行Schema验证,确保文档符合指定的XML Schema定义,保证数据的准确性和一致性。 5. **转换XML到其他格式**:DOM4J可以将XML转换为Java对象,也可以将Java对象转换为XML...
- `Element`类代表XML的元素节点,可以通过`getElementByTagName()`, `elements()`等方法获取指定标签名的元素或所有子元素。 - `Attribute`类表示属性,可通过`getAttributes()`获取元素的所有属性,或用`...
3. **XPath支持**:DOM4J提供了对XPath表达式的强大支持,可以方便地定位XML文档中的任何节点。 4. **轻量级**:DOM4J的设计目标是轻便且高效,它不依赖于大型的JDK库,如JAXP,使得其可以在各种环境下游刃有余。 *...
6. **XML Schema支持**:DOM4J可以与XML Schema进行交互,验证XML文档是否符合指定的模式。 7. **JAXB集成**:DOM4J可以与Java Architecture for XML Binding(JAXB)集成,实现XML与Java对象之间的映射。 8. **转换...
- **集合框架集成**:DOM4J 结构基于 Java 集合框架,使得操作 XML 节点如操作 Java 对象一般方便。 - **DOM 支持**:除了标准的 DOM API,DOM4J 还提供了更简洁的接口来操作 DOM 树。 - **SAX 支持**:DOM4J ...
13. **NodeFilter**: 定义在DOM4J节点中产生的一个过滤器或谓词的行为。 14. **ProcessingInstruction**: 定义XML处理指令。 15. **Text**: 定义XML文本节点。 16. **Visitor**: 用于实现访问者模式。 17. **XPath**...
一旦DOM4J树构建完成,就可以通过遍历或查询来获取节点: ```java // 获取根元素 Element root = doc.getRootElement(); // 获取子节点 List<Element> elements = root.elements("子元素名称"); ``` ##### 3. ...
6. **Element和Attribute的扩展**:DOM4J的Element和Attribute类提供了许多方便的方法,如添加子元素、获取属性值等,使得XML处理更加直观。 7. **集合框架集成**:DOM4J的API设计与Java集合框架紧密结合,使得XML...
本文将详细介绍如何使用DOM4J解析XML文档,并演示如何将数据库中的数据存储到XML文件中。 #### 一、DOM4J的基本使用 ##### 1.1 读取XML文件 DOM4J提供了多种方法来读取XML文件。其中,最常用的方法是通过`...
4. **子节点操作**:对于选定的节点,可以使用`element.elements()`获取其所有子元素,或使用`element.element("childElementName")`获取指定名称的子元素。 **DOM4J API**: DOM4J的API非常丰富,以下是一些常用的...
DOM4J和XPath是XML处理的得力工具,DOM4J为XML文档提供了一种直观且高效的处理方式,而XPath则提供了强大的查询语言,两者结合可以更便捷地进行XML数据的处理和分析。在Java项目中,使用DOM4J配合XPath可以极大地...
在实际应用中,DOM4J常用于配置文件的读写、数据交换、XML文档的生成等场景。例如,Web服务的客户端和服务端可能会使用DOM4J解析和生成SOAP消息;Spring框架中也大量使用DOM4J处理配置文件;在企业级应用中,DOM4J也...
四、使用 dom4j 修改 XML 文件 修改 XML 文件主要包括添加、删除或更新节点和属性。例如,添加子元素: ```java Element child = factory.createElement("child"); rootElement.add(child); ``` 删除元素: ```...
1. **XML数据的读取**:通过DOM4J,开发者可以轻松地读取XML文件,获取其结构和内容。 2. **XML数据的写入**:创建新的XML文档,或者修改现有XML文件的结构和内容。 3. **XML数据的搜索**:利用XPath表达式快速定位...
这个例子展示了如何使用DOM4J解析XML,提取指定节点(“item”),并将属性和文本内容存储在Map中。实际应用中,你可能需要根据实际的XML结构来调整路径选择和数据处理逻辑。 总之,DOM4J是处理XML的强大工具,尤其...
#### 四、DOM4j使用示例 下面是一个简单的示例,演示如何使用DOM4J来读取XML文件: ```java import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Dom4jExample {...
DOM4J是一个强大的Java库,专门用于处理XML...通过理解XML的结构和DOM4J的API,开发者可以高效地读取、解析和操作XML数据,实现各种复杂的业务逻辑。在实际项目中,DOM4J的灵活性和性能使其成为处理XML的首选工具之一。