groovy怎么解析xml文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了groovy怎么解析xml文件相关的知识,希望对你有一定的参考价值。
参考技术A 在GroovyConsole
运行以下代码,结果良好。
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("">job
这里-很可能这个问题需要进一步标记。这是[詹金斯]?
我根据@cfrick 的建议编辑了您的问题......授予与您的问题不符。我发布了一个应该根据您的要求的答案(您需要删除序言,如您将在我的示例中看到的那样)
【参考方案1】:
解决方案
以下解决方案将添加一个与 name
具有相同值的新属性 userimport 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文件的主要内容,如果未能解决你的问题,请参考以下文章
GroovyXml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 删除 Xml 文件中的节点 | 增加 Xml 文件中的节点 | 将修改后的 Xml 数据输出到文件中 )