`
364434006
  • 浏览: 593428 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Groovy之Xml解析

 
阅读更多

groovy解析xml语法真是很方便,同使用W3C DOM、dom4j、JDOM比起来确实是减少了不少冗余代码,代码看起来更通俗易懂。

XML解析提供了XmlParser、XmlSlurper

XML生成提供了MarkupBuilder、StreamingMarkupBuilder类

<langs type="current">
  <language>Java</language>
  <language>Groovy</language>
  <language>JavaScript</language>
</langs>

 使用XmlParser进行xml解析

def langs = new XmlParser().parse("languages.xml")
println "type = ${langs.attribute("type")}"
langs.language.each{
  println it.text()
}

//output:
type = current
Java
Groovy
JavaScript

 当然,如果解析的是xml格式的字符串,XmlParser也提供了方法来解析,但如果java代码进行解析还需要将xml变量中的特殊符号进行转义,更重要的是还需要将字符串流化后才能进行解析。

def xml = """
<langs type="current">
  <language>Java</language>
  <language>Groovy</language>
  <language>JavaScript</language>
</langs>
"""

def langs = new XmlParser().parseText(xml)
println "type = ${langs.attribute("type")}"
langs.language.each{
  println it.text()
}

 

XML构建:

使用MarkupBuilder进行xml解析:

def xml = new groovy.xml.MarkupBuilder()
xml.langs(type:"current"){
  language("Java")
  language("Groovy")
  language("JavaScript")
}

output:
<langs type='current'>
  <language>Java</language>
  <language>Groovy</language>
  <language>JavaScript</language>
</langs> 

 MarkupBuilder 非常适合用于同步构建简单的 XML 文档。对于更加高级的 XML 创建,Groovy 提供了一个 StreamingMarkupBuilder。通过它,您可以添加各种各样的 XML 内容,比如说处理指令、名称空间和使用 mkp 帮助对象的未转义文本(非常适合 CDATA 块)

				
def comment = "<![CDATA[<!-- address is new to this release -->]]>"
def builder = new groovy.xml.StreamingMarkupBuilder()
builder.encoding = "UTF-8"
def person = {
  mkp.xmlDeclaration()
  mkp.pi("xml-stylesheet": "type='text/xsl' href='myfile.xslt'" )
  mkp.declareNamespace('':'http://myDefaultNamespace')
  mkp.declareNamespace('location':'http://someOtherNamespace')
  person(id:100){
    firstname("Jane")
    lastname("Doe")
    mkp.yieldUnescaped(comment)
    location.address("123 Main")
  }
}
def writer = new FileWriter("person.xml")
writer << builder.bind(person)

//output:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href='myfile.xslt'?>
<person id='100'
        xmlns='http://myDefaultNamespace'
        xmlns:location='http://someOtherNamespace'>
  <firstname>Jane</firstname>
  <lastname>Doe</lastname>
  <![CDATA[<!-- address is new to this release -->]]>
  <location:address>123 Main</location:address>
</person>

 

分享到:
评论

相关推荐

    Groovy和Xquery脚本JSON和XML解析工具

    脚本解析工具,可使用Groovy或Xquery解析JSON报文或XML报文

    Groovy 动态修改XML

    1. **解析XML**:首先,使用XMLSlurper或XMLParser将XML字符串或文件转换为Groovy的DOM(文档对象模型)表示。例如: ```groovy def xml = new XmlSlurper().parseText('&lt;xml&gt;&lt;node&gt;text&lt;/node&gt;&lt;/xml&gt;') ``` 2. *...

    groovy-xml-2.2.0-beta-1.zip

    "groovy-xml-2.2.0-beta-1.zip" 文件是Groovy的一个版本,专注于XML处理功能,特别适用于在Groovy中解析、操作和生成XML文档。这个版本为2.2.0的beta-1,意味着它是该版本系列中的早期测试版,开发者可能在其中寻找...

    xstream_dom4j_jdom_groovy解析xml

    例如,如果需要快速、简单的XML解析,Groovy的XMLSlurper可能是一个好选择;而如果涉及到大量数据处理和复杂的XML结构,可能需要考虑性能更强的Dom4j或XStream。在深入学习这些库时,了解它们的基本用法、优势和限制...

    用pullXML解析本地数据并存在本地

    PullXML解析器是Android系统提供的一种轻量级的XML解析方法,它适用于处理大量的XML数据,特别是当内存有限或需要高效处理流式数据时。本文将深入探讨如何使用PullXML解析本地XML数据,并将解析后的数据存回本地。 ...

    Dom方式解析XML

    - **解析XML文件**:然后,使用`DocumentBuilder`解析XML文件,得到`Document`对象,表示整个XML文档。 ```java File xmlFile = new File("path_to_xml_file"); Document document = builder.parse(xmlFile); `...

    解析XML的dom、sax和dom4j的jar包

    DOM是一种基于树形结构的XML解析方法,它将整个XML文档加载到内存中,形成一个对象模型。通过这个模型,开发者可以方便地访问和修改XML文档的任何部分。DOM解析器的核心接口是`org.w3c.dom.Document`。Java中的DOM...

    groovy-all

    8. **Groovy HTML and XML Processing**: 提供了简洁的API来处理HTML和XML文档,如GPath和XmlSlurper。 9. **Grails Integration**: 虽然未明确提及,但Groovy常用于构建Grails框架的应用,这是一个基于Groovy的...

    JDOM解析本地XML

    在IT领域,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,广泛应用在各种系统间...在实际应用中,根据项目需求选择合适的XML处理库,并熟练运用其特性,是每一个IT专业人员必备的技能之一。

    Android开发-Retrofit-AndroidStudio(四)simplexml解析XML_免积分

    在本教程中,我们将深入探讨如何在Android Studio项目中使用Retrofit与simplexml库一起解析XML数据。简单XML库(Simple XML)是Java中一个轻量级、高效的XML序列化和反序列化库,非常适合处理XML格式的数据。 首先...

    Groovy 介绍 官网资源

    - 解析GroovyDoc在线文档 - 使用JFreeChart绘制图表 - 使用标记构建器进行敏捷XML创建 - 使用委托元类 - 使用Eclipse插件开发Groovy项目 #### 五、结语 Groovy作为一种高度动态的语言,在Java平台上提供了极大的...

    android XMl 解析神奇xstream 二: 把对象转换成xml

    ```groovy implementation 'com.thoughtworks.xstream:xstream:1.4.19' ``` 确保同步项目,使新的依赖生效。 2. **对象与XML的映射**:在XStream中,每个Java类可以映射到一个XML元素,类的字段则映射到XML的...

    【android开发】解析SD卡下的XML文件

    在Android开发中,XML文件常用于存储数据,如配置信息、布局描述等。当需要从SD卡读取XML文件时,开发者需要掌握特定的技术来解析这些...希望这个教程对大家在实际项目开发中有所帮助,提升对Android XML解析的理解。

    dom4j解析XML所需要的包

    下面我们将深入探讨DOM4J解析XML的基本概念、使用方法以及它与其他XML解析器的比较。 XML(eXtensible Markup Language)是一种标记语言,广泛应用于数据交换、配置文件和文档结构化存储。DOM4J是基于DOM(Document...

    android XMl 解析神奇xstream 三: 把复杂对象转换成对象

    `toXML()`用于将Java对象转换为XML字符串,而`fromXML()`则将XML字符串解析回对应的Java对象。XStream通过使用所谓的“alias”来简化XML结构,使得类名和XML标签之间可以进行映射。 在Android项目中,首先需要添加...

    groovy语法掘金1

    下面是一个简单的XML解析示例: ```groovy def xml = ''' ... ''' def xmlSlurper = new XmlSlurper() def response = xmlSlurper.parseText(xml) ``` `parseText()`方法将XML字符串转换为一个Groovy...

    groovy

    3. 数据处理:Groovy可以方便地处理XML、JSON等数据格式,常用于数据转换和解析。 4. 测试:Spock测试框架使用Groovy编写,提供了富有表达力的测试语句,简化了测试代码的编写。 5. 容器管理:在Apache Kafka、...

    groovy in action.pdf

    Groovy对XML的支持非常强大,不仅提供了内置的解析和生成能力,还有一系列的API和工具,使得XML处理变得简单而高效。 ### 深入Groovy的日常应用 #### 小贴士和技巧 这一部分提供了许多实用的Groovy编程小贴士和...

    simple-xml jar包

    本篇文章将深入探讨Simple-XML库,包括其核心特性、安装方法、使用示例以及与其他XML解析库的对比。 ### 1. Simple-XML简介 Simple-XML库是专门为简化XML解析和序列化而设计的。它以其简洁的API和强大的注解功能而...

    Xstream生成和解析xml.rar

    **四、XML解析** 1. **基本使用** 将XML字符串反序列化为Java对象,使用`fromXML()`方法: ```java String xml = "&lt;User&gt;&lt;name&gt;Tom&lt;/name&gt;&lt;age&gt;25&lt;/age&gt;&lt;/User&gt;"; User user = (User) xstream.fromXML(xml); ...

Global site tag (gtag.js) - Google Analytics