在Groovy中拆分XML

Ste*_*eve 3 xml xslt groovy

我有一个看起来像这样的XML.

<?xml version="1.0" encoding="UTF-8"?>
<header>
<row>
 <item1>stuff</item1>
 <item2>stuff</item2>
</row>
<row>
 <item1>stuff</item1>
 <item2>stuff</item2>
</row>
...
</header>
Run Code Online (Sandbox Code Playgroud)

我想读这个

def doc = new XmlSlurper().parseText(message)
Run Code Online (Sandbox Code Playgroud)

然后输出每个"row"元素作为单独的消息.例如:

<header>
<row1>
     <item1>stuff</item1>
     <item2>stuff</item2>
</row1>
</header>
Run Code Online (Sandbox Code Playgroud)

在Groovy中执行此操作的正确方法是什么?我应该使用XSLT还是过于复杂的东西?

eme*_*esx 5

如果你的情况真的很简单,我会选择Groovy,在这种情况下真的很棒.

final xml = '''
    <header>
        <row>
            <item1>stuff11</item1>
            <item2>stuff12</item2>
        </row>
        <row>
            <item1>stuff21</item1>
            <item2>stuff22</item2>
        </row>
    </header>
'''

final xmlDoc = new XmlSlurper().parseText(xml)
Run Code Online (Sandbox Code Playgroud)

阅读完文档后,为每一行构建一个文档

def rowId = 1

String singleRow = new StreamingMarkupBuilder().bind {
    header {
        "row$rowId" {
            mkp.yield xmlDoc.row[rowId-1].children()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它已经完成了.