我正在尝试将格式化的 xml 打印到文件中,但我的 XmlNodePrinter 仅打印一个空白文件。我认为我传入的 xml 对象已正确填充。我可以使用 StreamingMarkupBuilder 打印它,但它的格式全部在一行上。我不知道为什么我不能使用 XmlNodePrinter。这是我的代码的相关部分。
该代码的目标是修改 xml 配置文件。我必须在特定权限下进行查找/替换。
File file = new File("input.xml")
def root = new XmlSlurper().parse(file)
def admins = root.user.findAll {[email protected] /cdn-cgi/l/email-protection().equals("admin")}
admins.each { admin ->
admin.permission.findAll { [email protected] /cdn-cgi/l/email-protection().equals("RoleManagement")
}.each {
it.@type = "AdminRoleManagement"
}
}
String filename = "output.xml"
new XmlNodePrinter(new PrintWriter(filename)).print(root)
Thanks
我相信XmlNodePrinter
需要一个Node
而不是一个GPathResult
XmlSlurper.parse
回报GPathResult
所以显而易见的解决方案是使用XmlParser
代替XmlSlurper
或者,您可以使用StreamingMarkupBuilder
and do:
def smb = new StreamingMarkupBuilder().bind { mkp.yield root }
new File( 'output.xml' ).text = groovy.xml.XmlUtil.serialize( smb )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)