[英]Groovy Script to Parse XML values
我需要一個 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()
以下解決方案將添加一個與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)
println 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 拉到文件中,然后寫入文件,您可以相應地修改腳本
import groovy.xml.StreamingMarkupBuilder
def xmlFile = 'file.xml'
def xml = new XmlParser().parse(xmlFile)
println 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.