使用Dom4j中的Document与Element解析XML文档

本帖是个记录学习贴,学习下如何解析xml文档,百度搜索一番,得知通过dom4j包下的Document与Element可以实现对XML文档的解析(不管是简单的xml文档或是复杂嵌套的xml文档)。

Dom4j API文档:Dom4j

本文主要关注的两个接口:Document、Element

使用Dom4j中的Document与Element解析XML文档_第1张图片

通过红框中的两个接口就可以完成对xml文档的解析。

开始代码

我们新建个java工程,用来学习Dom4j,因为用到此jar包,所以提前将jar包下载下来,放入工程中。

附上dom4j-1.6.1jar包下载地址:点我

再放一个用来测试的xml文档:



	
		1
		成功
	
	
		
			小明1
			药费单
			121.50
			
				头孢XXX
				西药费
				45.00
				0
				
				55.00
				
				1
			
			
				包扎带
				材料费
				21.50
				0
				
				55.00
				
				1
			
		
		
			小明2
			检查单
			46.50
			
				血常规
				检验费
				46.50
				0
				
				55.00
				
				1
			
		
	

我们就以上面这个xml文档来解析,我把它命名文件名为:test.xml,放在我的E盘中,目录为:E:\test.xml

本文介绍两种获取document对象的方式:

  • 读取本地xml文件获取document对象
  • 直接根据xml内容的字符串获取document对象

下面分别对上面两种获取document对象的方式进行示例

第一种

SAXReader reader = new SAXReader();
Document doc = reader.read(new File("E:\\test.xml"));

第二种

String xml = "头孢";
Document doc = DocumentHelper.parseText(xml);

下面具体讲解解析的过程:(我们以第一种:读取本地xml文件的方式进行xml解析)

public class Dom4j {
	
	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		try {
			SAXReader reader = new SAXReader();
			Document doc = reader.read(new File("E:\\test.xml"));		//读取本地xml文件
			Element rootElement = doc.getRootElement();		// 获取document对象根节点,即最外层节点下的内容
			Element headElement = rootElement.element("head");	// 获取根节点下的所有节点,获得下的内容
			System.out.println("[ErrCode] = " + headElement.elementText("ErrCode")); 	// 获取xml文档中标签为的内容
			Element bodyElement = rootElement.element("body");
			List elList = bodyElement.elements("detail");
			for (Element element : elList) {
				System.out.println("[UserName] = " + element.elementText("UserName"));
				List feeItemElement = element.elements("FeeItem");
				for (Element element2 : feeItemElement) {
					System.out.println("[ItemType] = " + element2.elementText("ItemType"));		//获取xml文档中标签为的内容
				}
			}
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}

}

以下是输出结果

[ErrCode] = 1
[UserName] = 小明1
[ItemType] = 西药费
[ItemType] = 材料费
[UserName] = 小明2
[ItemType] = 检验费

可以看到,xml文档中任意深度的指定标签内容都是可以读取到的,主要用到了以下几个方法:

getRootElement(),通过document对象的getRootElement()可以获得xml文档根节点下的内容

使用Dom4j中的Document与Element解析XML文档_第2张图片

element(),通过element对象的element()可以获得指定子节点下的内容

使用Dom4j中的Document与Element解析XML文档_第3张图片

elements(),通过element对象的elements()可以获得指定的子节点集合下的内容

elementText(),通过element对象的elementText()可以获得指定标签的内容

 

 

你可能感兴趣的:(java相关,dom4j,document,element,xml)