在Groovy中以原始XML的形式获取节点

zpqajqem  于 8个月前  发布在  其他
关注(0)|答案(1)|浏览(109)

如果我有一个XML结构:

<a>
  <b>
    <c>aaa</c>
    <d a="42"/>
  </b>
</a>

我想获取b-node作为原始XML字符串:

<b>
  <c>aaa</c>
  <d a="42"/>
</b>

我尝试使用XmlSlurper.text(),但它只返回aaa
是否可以从节点生成原始XML,而不用XmlBuilder重新创建它?
更新
我最终使用了以下代码:

StringWriter sw = new StringWriter()
XmlNodePrinter p = new XmlNodePrinter( new IndentPrinter( sw, '', false, false ), "'" )
p.namespaceAware = false
node.children().each p.&print

println sw
uajslkp6

uajslkp61#

可以使用XmlUtil.serialize()

import groovy.xml.*
def xmlString = '''<a>
  <b>
    <c>aaa</c>
    <d a="42"/>
  </b>
</a>'''
def bNode = new XmlSlurper().parseText(xmlString).b

def bXML = XmlUtil.serialize(bNode)

println(bXML)

相关问题