Java中使用dom4j解析xml

客户端与服务器常用的数据交换格式有:xml、json、html

xml体积、占宽带比较大,解析方式有Dom4j、Sax、Pull

xml = “文档树”

xml文件是树结构的,每个封闭的标签都是一个节点,每个节点都有自己的属性和内容

一个xml文件只有一个根节点,但每个节点可以有多个子节点

引入dom4j的jar包

<dependencies>
    <!-- 添加dom4j -->
  	<!-- https://mvnrepository.com/artifact/dom4j/dom4j -->
	<dependency>
	    <groupId>dom4j</groupId>
	    <artifactId>dom4j</artifactId>
	    <version>1.6.1</version>
	</dependency>
</dependencies>

创一个xml文件

<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student1 id="01">
		<姓名>ymk</姓名>
		<性别>男</性别>
		<爱好>唱、跳、rap、篮球</爱好>
		<QQ号>382038455</QQ号>
	</student1>
	<student2 id="02">
		<姓名>ymk's girlfriend</姓名>
		<性别>女</性别>
		<爱好>唱、跳、rap、篮球</爱好>
		<QQ号>4382038455</QQ号>
	</student2>
</students>  

解析xml Demo(深搜写法)

	// xml路径
	private static String fileName = "E:\\java\\eclipse-workspace\\SpringIOC\\src\\main\\java\\com\\ymk\\test\\xml\\test_dom4j.xml";

	public static void main(String[] args) throws DocumentException {
		SAXReader saxReader = new SAXReader();
		// SAXReader读取xml
		Document read = (Document) saxReader.read(new File(fileName));
		// 获取根节点
		Element rootElement = read.getRootElement();
		// 解析xml
		getBean(rootElement);
	}

	/**
	 * @classDesc: 功能描述: (深搜解析)
	 * @author: ymk
	 * @createTime 2019年6月1日
	 * @version v1.0
	 */
	public static void getBean(Element rootElement) {
		System.out.println("节点名称:" + rootElement.getName());
		// 拿到节点属性
		List<Attribute> attritubes = rootElement.attributes();
		for (Attribute attribute : attritubes) {
			System.out.println("属性:" + attribute.getName() + "---" + attribute.getText());
		}
		// 节点名称
		if (!rootElement.getTextTrim().equals("")) {
			System.out.println(rootElement.getName() + "---" + rootElement.getText());
		}
		// 返回下一个节点
		Iterator<Element> eIterator = rootElement.elementIterator();
		while (eIterator.hasNext()) {
			// 获取当前节点值
			Element next = eIterator.next();
			// 递归
			getBean(next);
		}
	}

结果:

节点名称:students
节点名称:student1
属性:id---01
节点名称:姓名
姓名---ymk
节点名称:性别
性别---男
节点名称:爱好
爱好---唱、跳、rap、篮球
节点名称:QQ号
QQ号---382038455
节点名称:student2
属性:id---02
节点名称:姓名
姓名---ymk's girlfriend
节点名称:性别
性别---女
节点名称:爱好
爱好---唱、跳、rap、篮球
节点名称:QQ号
QQ号---4382038455

参考:蚂蚁课堂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值