appendNode在特定位置使用xmlSlurper

时间:2017-10-20 22:15:05

标签: groovy xmlslurper

我将在下面包含xml结构:

@Rao,@ tim_yates。实际的xml是:

searchView

我需要包含一个新节点。新的XML必须是:

<prnReq>
    <ltrPrnReqs>
        <ltrPrnReq>
            <ltrData>encoded64 text</ltrData>
        </ltrPrnReq>
    </ltrPrnReqs>
</prnReq>

问题是如何在?

中附加新节点

我发现很多样本如何使用appendNode,但是,它总是一个 root.child。我需要更进一步的XML结构并在

添加一个节点

<prnReq> <ltrPrnReqs> <ltrPrnReq> <ltrData> <Salutation>text</Salutation> </ltrData> </ltrPrnReq> </ltrPrnReqs> </prnReq>

要包含的节点是prnReq.ltrPrnReqs.ltrPrnReq.ltrData

欢迎任何评论。

在当前代码下方。 非常感谢!

<salutation>

1 个答案:

答案 0 :(得分:2)

您应该可以使用appendNode添加新节点。

以下是展示如何操作的完整示例。

def xmlString = """<prnReq>
    <ltrPrnReqs>
        <ltrPrnReq>
            <ltrData>encoded64 text</ltrData>
        </ltrPrnReq>
    </ltrPrnReqs>
</prnReq>"""


def xml = new XmlSlurper().parseText(xmlString)
def ltrData = xml.'**'.find{it.name() == 'ltrData'}
ltrData.replaceBody()
ltrData.appendNode {
  Salutation('text')
}
println groovy.xml.XmlUtil.serialize(xml)

您可以在线快速尝试 demo