【Groovy】Xml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 获取 Xml 文件中的节点和属性 | 获取 Xml 文件中的节点属性 )





一、创建 XmlParser 解析器



创建 XmlParser 解析器 , 传入 Xml 文件对应的 File 对象 ;

// 要解析的 xml 文件
def xmlFile = new File("a.xml")

// 创建 Xml 文件解析器
def xmlParser = new XmlParser().parse(xmlFile)

解析如下 xml 文件 :

<?xml version='1.0' encoding='UTF-8'?>
<student>
  <name code="utf-8">Tom</name>
  <age>18</age>
  <team>
    <member>Jerry</member>
  </team>
</student>




二、获取 Xml 文件中的节点



使用

xmlParser.name

代码 , 可以获取 Xml 文件中的 <name> 节点 , <name> 节点位于根节点下, 可以直接获取 , 由于相同名称的节点可以定义多个 , 因此这里获取的 <name> 节点 是一个数组 ;

// 获取 xml 文件下的 <name> 节点
// <name> 节点位于根节点下, 可以直接获取
// 获取的 <name> 节点是一个数组
// 如果只有一个该节点, 可以直接获取第 0 个元素即可
println xmlParser.name
println xmlParser.name[0]

打印结果如下 :

[name[attributes={code=utf-8}; value=[Tom]]]
name[attributes={code=utf-8}; value=[Tom]]

获取多层嵌套的节点 :

// 获取 <team> 节点 下的 <member> 节点, 获取的是数组
// 也是获取第 0 个元素
println xmlParser.team[0].member[0]




三、获取 Xml 文件中的节点属性



XmlParser 获取的节点类型是 Node 类型对象 , 调用 Node 对象的 attributes() 方法 , 可获取 Xml 节点的属性 ;

// 获取 name 节点
Node nameNode = xmlParser.name[0]
// 获取 Activity 节点的属性 , 这是一个 map 集合
println nameNode.attributes()

执行结果为 :

[code:utf-8]




四、完整代码示例



完整代码示例 :

import groovy.xml.XmlNodePrinter

// 要解析的 xml 文件
def xmlFile = new File("a.xml")

// 创建 Xml 文件解析器
def xmlParser = new XmlParser().parse(xmlFile)

// 获取 xml 文件下的 <name> 节点
// <name> 节点位于根节点下, 可以直接获取
// 获取的 <name> 节点是一个数组
// 如果只有一个该节点, 可以直接获取第 0 个元素即可
println xmlParser.name
println xmlParser.name[0]

// 获取 <team> 节点 下的 <member> 节点, 获取的是数组
// 也是获取第 0 个元素
println xmlParser.team[0].member[0]

// 获取 name 节点
Node nameNode = xmlParser.name[0]
// 获取 Activity 节点的属性 , 这是一个 map 集合
println nameNode.attributes()

执行结果 :

[name[attributes={code=utf-8}; value=[Tom]]]
name[attributes={code=utf-8}; value=[Tom]]
member[attributes={}; value=[Jerry]]
[code:utf-8]

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值