gpt4 book ai didi

xml - 如何仅使用 Parser 实例将 XML 写入文件?

转载 作者:数据小太阳 更新时间:2023-10-29 01:44:47 26 4
gpt4 key购买 nike

这是我的 Groovy 代码:

// ...
def xml = new XmlParser().parse(fileName)
xml.each { e ->
// some changes are being made to XML
xml.append("test", "test me")
}
def writer = new FileWriter(newFileName)
new XmlNodePrinter(new PrintWriter(writer)).print(xml)

代码有效,但输出的 XML 有很多不必要的空格。看起来我在写入文件时做错了。

附言。感谢 Tim,它应该是这样工作的(上面示例的最后一行应替换为这三行):

def printer = new XmlNodePrinter(new PrintWriter(writer))
printer.preserveWhitespace = true
printer.print(xml)

最佳答案

如果你替换会发生什么:

def writer = new FileWriter(newFileName)
new XmlNodePrinter(new PrintWriter(writer)).print(xml)

与:

new File( newFilename ).withWriter { out ->
printer = new XmlNodePrinter( out )
printer.preserveWhitespace = true
printer.print( xml )
}

-- 编辑 --

正如所指出的,感觉应该是 preserveWhitespace = false,但是如果您尝试以下测试代码:

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

def xml = new XmlParser().parseText( x )
xml.appendNode 'language', 'Ruby'

def printIt = { node, pw ->
println "With preserveWhitespace=$pw:"
def s = new StringWriter()
printer = new XmlNodePrinter( new PrintWriter( s ) )
printer.preserveWhitespace = pw
printer.print( xml )
println s
}

printIt xml, true
printIt xml, false

你得到输出:

With preserveWhitespace=true:
<langs type="current">
<language>Java</language>
<language>Groovy</language>
<language>JavaScript</language>
<language>Ruby</language>
</langs>

With preserveWhitespace=false:
<langs type="current">
<language>
Java
</language>
<language>
Groovy
</language>
<language>
JavaScript
</language>
<language>
Ruby
</language>
</langs>

关于xml - 如何仅使用 Parser 实例将 XML 写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5142967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com