DOM4J递归实现XML解析

佐手、 提交于 2019-12-14 18:44:31

什么是DOM4J

DOM4J(Document Object Model for Java)是用来读写XML文件的一个开源的JavaXML API。 采用Java集合框架,并完全支持DOM、SAX和JAXP。

为什么使用DOM4J

DOM4J凭着优秀的性能、强大的功能和易用性。越来越多的Java软件都在使用dom4j来读写XML,连Sun的JAXM也在用dom4j。

怎么用DOM4J

  1. DOM4J为第三方软件,第一步引入DOM4J的jar包,或者引入DOM4J的maven依赖。下为DOM4J依赖
<dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>1.6.1</version>
</dependency>
  1. 待解析的XML文件
<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student id="001" type="A">
		<studentName>张三</studentName>
		<course>
			<courseName>数学</courseName>
			<courseName>英语</courseName>
		</course>
		<sex></sex>
		<age>21</age>
	</student >
	<student id="002">
		<studentName>李四</studentName>
		<sex></sex>
		<age>19</age>
	</student>
</students>
  1. 利用DOM4J解析XML文件代码实现
public class DOM4JParser {
	public static void main(String[] args) {
		//待解析的xml文件路径
		Parser("src/student.xml");
	}

	public static void Parser(String xmlPath) {

		SAXReader reader = new SAXReader();
		// 声明Document对象
		Document doc = null;
		try {
			// (2). 读取xml文件,获得Document对象
			doc = reader.read(xmlPath);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		// (3). 获得根元素
		Element root = doc.getRootElement();
		// (4). 重根元素遍历解析
		parserElement(root);
	}

	private static void parserElement(Element element) {
		// 获取当前元素名称
		System.out.print("elementName :" + element.getName());
		// 获得当前元素内容 处理获得内容
		if (!"".equals(element.getTextTrim()) && element.getTextTrim() != null) {
			System.out.println(":" + element.getTextTrim());
		} else {
			System.out.println();
		}
		if (element != null) {
			// 获得当前元素的属性迭代器
			Iterator<?> attributeIterator = element.attributeIterator();
			// 遍历出所有属性 处理获得的属性
			while (attributeIterator.hasNext()) {
				Attribute attr = (Attribute) attributeIterator.next();
				System.out.println("attrname :" + attr.getName() + ":" + attr.getText());
			}
			// 获得当前元素的元素迭代器
			Iterator<?> elementIterator = element.elementIterator();
			// 迭代出所有子元素 有子元素 则解析当前元素
			while (elementIterator.hasNext()) {
				// 解析元素
				parserElement((Element) elementIterator.next());
			}
		}
	}
}
  1. 运行结果如下
    DOM4J解析结果
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!