Dom4j解析xml文件

解析xml的方式有三种:Sax,Dom,Pull。这里简单介绍一下Dom解析(Dom4j),要提前导入dom4j.jar包。

要解析的xml文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://www.example.org/web-app_2_5" 
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"
			version="2.5">
	<servlet>
		<servlet-name>Hello World</servlet-name>
		<servlet-class>agasgas</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>Hello World</servlet-name>	
		<url-pattern>sagasg</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file></welcome-file>
	</welcome-file-list>			
</web-app>
解析xml文件的简单步骤:
  1. 获取解析器:SAXReader saxReader = new SAXReader();
  2. 通过解析器的read(url)方法解析xml文件获取document操作对象:Document document = saxReader.read("src/TestDom4j/test.xml");传入内容为xml文件的路径(url)。
  3. 通过document的getRootElement()方法获取根节点:Element rootElement = document.getRootElement();
  4. 通过根节点的elements()方法获取根节点下的所有子节点(返回值为装有所有子节点的List列表):List<Element> childElements = rootElement.elements();
  5. 遍历列表,通过判断子节点的名称(element.getName()方法获取子节点名称)与要解析的信息是否相等来获取信息,通过子节点的element(String string)方法获取子节点的子节点,getText()方法获取子节点的文本信息。
    for (Element element : childElements) {
    				if("servlet".equals(element.getName())) {
    					String servletName = element.element("servlet-name").getText();
    					String servletClass = element.element("servlet-class").getText();
    				}
    		}
    
完整代码:
package TestDom4j;

import java.util.List;
import java.util.jar.Attributes.Name;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.jupiter.api.Test;

public class TessDom4j {
	@Test
	public void dom4jTest(){
		try {
			//1.获取解析器
			SAXReader saxReader = new SAXReader();
			//2.读取xml文件获得document对象
			Document document = saxReader.read("src/TestDom4j/test.xml");
			//3.获得根节点
			Element rootElement = document.getRootElement();
			//4.获得根节点下的所有子节点,返回一个List列表
			List<Element> childElements = rootElement.elements();
			//5.遍历所有子节点,并得到想要的数据
			for (Element element : childElements) {
				if("servlet".equals(element.getName())) {
					String servletName = element.element("servlet-name").getText();
					String servletClass = element.element("servlet-class").getText();
				}
				if("servlet-mapping".equals(element.getName())) {
					String servletName = element.element("servlet-name").getText();
					String urlPattern = element.element("url-pattern").getText();
				}
			}
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值