groovy怎么解析xml文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了groovy怎么解析xml文件相关的知识,希望对你有一定的参考价值。

参考技术A 在Groovy
Console
运行以下代码,结果良好。
import
groovy.xml.StreamingMarkupBuilder
//
the
original
XML
def
input
=
"
"
//
add
attributeName="attributeValue"
to
the
root
def
root
=
new
XmlSlurper().parseText(input)
root.@attributeName
=
'attributeValue'
//
get
the
modified
XML
and
check
that
it
worked
def
outputBuilder
=
new
StreamingMarkupBuilder()
String
updatedXml
=
outputBuilder.bind
mkp.yield
root

assert
"
"
==
updatedXml
增加一个特性与读一个特性是一样的:
import
groovy.xml.StreamingMarkupBuilder
def
input
=
'''
'''
def
root
=
new
XmlSlurper().parseText(input)
root.@stuff
=
'new'
def
outputBuilder
=
new
StreamingMarkupBuilder()
String
result
=
outputBuilder.bind
mkp.yield
root

println
result
将生成:

解析 XML 值的 Groovy 脚本

【中文标题】解析 XML 值的 Groovy 脚本【英文标题】:Groovy Script to Parse XML values 【发布时间】:2021-12-31 22:04:38 【问题描述】:

问题

我需要一个 groovy 脚本来解析这些票证名称并将它们保存在用户属性中

<?xml version="1.0" encoding="utf-8"?>
<root>
  <FTP FTPName="ftp.com.samplecompany.net" Login="CertUser" Pass="Password"></FTP>
  <Ticket name="Accept">
  </Ticket>
  <Ticket name="Afp">    
  </Ticket>
  <Ticket name="Exe">    
  </Ticket>
</root>

当前代码

def tickets = job.getDocuments()[0].getText().split(""></Ticket><Ticket name="") 
def len = tickets.size()

【问题讨论】:

请添加您尝试过的代码以及失败的原因(例如错误、堆栈跟踪、日志等),以便我们对其进行改进。 def ticket = job.getDocuments()[0].getText().split(""> 请edit 问题并在那里添加代码。注释对共享代码没有用处。还有什么是job 这里-很可能这个问题需要进一步标记。这是[詹金斯]? 我根据@cfrick 的建议编辑了您的问题......授予与您的问题不符。我发布了一个应该根据您的要求的答案(您需要删除序言,如您将在我的示例中看到的那样) 【参考方案1】:

解决方案

以下解决方案将添加一个与 name

具有相同值的新属性 user
import groovy.xml.StreamingMarkupBuilder

def xmlStr = '''
<root>
  <FTP FTPName="ftp.com.samplecompany.net" Login="CertUser" Pass="Password"></FTP>
  <Ticket name="Accept">
  </Ticket>
  <Ticket name="Afp">    
  </Ticket>
  <Ticket name="Exe">    
  </Ticket>
</root>
'''

def xml = new XmlParser().parseText(xmlStr)
xml.Ticket['@name'].eachWithIndex  name, index ->
    xml.Ticket[index].@user = name



def outputBuilder = new StreamingMarkupBuilder()
def updatedXml = outputBuilder.bind mkp.yield xml 

println updatedXml

如果你想把 XML 拉到一个文件然后写入文件你可以相应地修改脚本

def xmlFile = 'file.xml'
def xml = new XmlParser().parse(xmlFile)

xml.Ticket['@name'].eachWithIndex  name, index ->
    xml.Ticket[index].@user = name


new XmlNodePrinter(new PrintWriter(new FileWriter(xmlFile))).print(xml)

这将产生以下文件

<root>
  <FTP FTPName="ftp.com.samplecompany.net" Login="CertUser" Pass="Password"/>
  <Ticket name="Accept" user="Accept"/>
  <Ticket name="Afp" user="Afp"/>
  <Ticket name="Exe" user="Exe"/>
</root>

注意:它可能会删除 XML prolog 和 cmets

【讨论】:

以上是关于groovy怎么解析xml文件的主要内容,如果未能解决你的问题,请参考以下文章

怎么用c语言解析xml文件

Java里面怎么解析xml文件的内容

GroovyXml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 删除 Xml 文件中的节点 | 增加 Xml 文件中的节点 | 将修改后的 Xml 数据输出到文件中 )

PB如何解析XML文件

XML解析失败:格式不符

如何解析XML文件