文章目录

  • 一、创建 XmlParser 解析器
  • 二、获取 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]

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

  1. XML专题:使用NSXMLParser解析xml文件

    使用NSXMLParser解析xml文件 1. 设置委托对象,开始解析      NSXMLParser *parser = [[NSXMLParser alloc] initWithData:dat ...

  2. python读取xml标注坐标_遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件...

    XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...

  3. php怎么解析xml,使用PHP快速解析复杂的XML文件

    使用PHP操作XML时,一般使用SimpleXML,但是在解析一些比较复杂的XML文件里, SimpleXML用起来就很麻烦了,比如下面这样的XML: demo.xml 我强烈推荐使用phpQuery ...

  4. 《Spring源码深度解析 郝佳 第2版》容器的基本实现与XML文件的加载

    目录 Spring的整体架构 容器的基本实现与XML文件的加载 一.Spring的整体架构 Spring是一个分层架构,主要包含以下部分 Core Container Data Access Web ...

  5. 让Visual Studio 2013为你自动生成XML反序列化的类

    Visual Sutdio 2013增加了许多新功能,其中很多都直接提高了对代码编辑的便利性.如: 1. 在代码编辑界面的右侧滚动条上显示不同颜色的标签,让开发人员可以对所编辑文档的修改.查找.定位情 ...

  6. java中sax的使用_java使用sax对xml文档的解析

    随着互联网技术的发展,XML技术变得越来越重要,从而出现了很多 与XML的整合应用方面的技术,SAX就是其中之一.在这里,我就简要 谈谈java怎样使用sax对xml文档的解析. 首先,让我们来谈谈S ...

  7. 用XML反序列化快速完成ASP.NET配置文件

    一般来说,asp.net的配置文件用web.config就可以解决,但是有时候我们希望完全用自己的形式来配置某些东西,比如希望用下面的形式来配置一个站点的所有有message. <Message ...

  8. ajax请求json和xml数据及对json和xml格式数据的解析

    ajax请求json和xml数据及对json和xml格式数据的解析 一.ajax请求json数据并解析 ajax的写法: json数据解析: 请求json经常出现的跨域报错: 二.ajax请求xml数 ...

  9. xml教程之java解析xml文档

    1.java解析xml文件介绍 XML解析方式分为两种:DOM方式和SAX方式 DOM:Document Object Model,文档对象模型.这种方式是W3C推荐的处理XML的一种方式. SAX: ...

最新文章

  1. red hat linux ping不通,装了Red Hat Enterprise 5.3 但是ping不通网关和其他机器,具体见贴内。...
  2. Python3 如何优雅地使用正则表达式(详解五)
  3. 北京大学计算机复试分数线,2014北京大学考研复试分数线公布
  4. 开发者的福利,报名即可领取代金券,赢运动手环
  5. 11个不常被提及的JavaScript小技巧
  6. libjpeg在windows下的编译
  7. benchmark如何测试mysql数据库_MySQL的benchmark函数
  8. 计算机组成原理华中科技大学秦磊华,计算机组成原理(华科)chap1
  9. oppor11点击Android,OPPO R11怎么网络共享?OPPO R11三种共享网络设置教程
  10. 最短路 POJ2387
  11. AES在线加密解密-附AES128,192,256,CBC,CFB,ECB,OFB,PCBC各种加密解密源码
  12. Springboot毕设项目健康在线服务平台26iy0(java+VUE+Mybatis+Maven+Mysql)
  13. MATLAB 自然数e的表达式坑、如何求解含有未知量的行列式
  14. 超简单的vim配置高亮
  15. oracle执行计划耗费 基数 字节,Oracle 查看执行计划
  16. 什么是产生式知识表示?给出这种表示方法的有缺点?
  17. EtherCAT总线介绍及从站硬件设计
  18. python点阵显示数字_Python实现点阵字体读取与转换的方法
  19. CUDA out of memory(然鹅明明还有空间)
  20. JUC(java.util.concurrent)的常见类

热门文章

  1. Ajax中POST和GET的区别
  2. 教你轻松恢复Linux口令
  3. 好久没写博客了,改天要把原博客资料整理下,弄个链接什么
  4. Google的成果回报型广告
  5. SQL Cache Invalidation
  6. 视图、触发器、事务、存储过程、函数
  7. 在CentOS上搭建PHP服务器环境
  8. Thread.currentThread().getContextClassLoader() 和 Class.getClassLoader()区别
  9. Js让静态人物动起来Demo演示
  10. titanium开发教程-03-02自定义tab group