使用dom4j解析XML节点名称与值并存入Map
"dom4j解析XML节点名称和值并存储到Map中" 本文将详细介绍如何使用Java中的dom4j库来解析XML文档,并提取其中的节点名称和值,然后将这些信息存储到一个String类型的Map中。dom4j是一个非常灵活且功能强大的Java XML API,它提供了丰富的DOM、SAX和JDOM接口,方便处理XML文档。 首先,我们需要引入dom4j的相关依赖。在Java项目中,这通常通过Maven或Gradle等构建工具完成。对于Maven,可以在pom.xml文件中添加以下依赖: ```xml <dependencies> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>2.1.3</version> </dependency> </dependencies> ``` 在提供的代码示例中,可以看到一个名为`Dom4jRead`的类,该类中包含了一个`main`方法,用于读取XML文件并解析节点名称和值。首先,创建了一个`XPP3Reader`对象,它是dom4j库中用于读取XML文档的一个类。这里也可以选择使用`SAXReader`,它们都是实现XML解析的不同方式。然后,通过`read`方法读取指定路径的XML文件,并将其转换为`Document`对象。 `Document`对象代表了整个XML文档,可以通过调用`getRootElement`方法获取XML文档的根元素。接下来,定义了一个名为`parse`的私有静态方法,用于遍历XML树并收集节点信息。这个方法接收一个`Element`对象作为参数,即当前正在处理的XML元素。 在`parse`方法内部,首先调用了`parseAttribute`方法处理当前元素的所有属性(如果有的话),然后通过`elements`方法获取当前元素的所有子元素。使用for-each循环遍历这些子元素,对每个子元素执行同样的解析过程。如果子元素不只包含文本(即还有其他子元素),则继续递归解析。 在遍历过程中,使用一个`HashMap`对象`resultMap`存储节点名称和值。对于属性,直接将属性名称和值添加到Map中;对于元素的文本内容,只有当元素没有子元素时,才将其文本内容视为节点值,添加到Map中。 最后,通过`System.out.println`打印出Map中特定节点名称对应的值,以此验证解析和存储的正确性。例如,这里打印了"book_name"和"book_price"对应的值。 这段代码展示了如何使用dom4j解析XML文档,提取节点名称和值,并将结果存储到Map中。这对于处理XML数据、进行数据交换或者XML配置文件的读取等场景非常有用。通过调整`parse`方法,可以根据实际需求自定义解析逻辑,如处理更复杂的XML结构或进行特定的业务逻辑操作。
import java.io.*;
import java.util.*;
import org.dom4j.io.*;
import org.dom4j.*;
/**
* Description:
*
网站: http://www.crazyit.org
*
Copyright (C), 2001-2010, Yeeku.H.Lee
*
This program is protected by copyright laws.
*
Program Name:
*
Date:
* @author XueHaiJun
* @version 1.0
*/
public class Dom4jRead {
public static void main(String[] args) throws Exception
{
//使用XPP3Reader来解析XML文档
XPP3Reader reader = new XPP3Reader();
//使用SAXReader来解析XML文档
//SAXReader reader = new SAXReader();
Document doc = reader.read(new File("WebRoot/book.xml"));
Element root = doc.getRootElement();
Map<String,String> getResultMap = parse(root);
System.out.println(getResultMap.get("book_name")+":11111:"+getResultMap.get("book_price"));
}
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展