修改grails中的groovy.util.slurpersupport.NodeChild

时间:2017-06-26 13:40:12

标签: xml grails groovy

是否可以附加节点 Grails中的groovy.util.slurpersupport.NodeChild?

AppendNode不起作用。

我是否必须使用xmlparser或xmlslurper?

祝你好运, 彼得

1 个答案:

答案 0 :(得分:1)

绝对有可能! appendNode可以工作,但一开始并不是特别明显如何使其工作。

在这个例子中,我们将一个表的HTML存储在一个对象中。我们将其解析为Node和NodeChild(ren),然后向其追加行。如果你已经拥有NodeChild,你可以从第二行代码开始,但是我想展示一下我在这个例子中是如何实现的。

def tableContent = new XmlSlurper().parseText(table.htmlContent)

tableContent.tbody.appendNode({
  tr(class: "appended", "data-uuid": UUID.randomUUID().toString()) {
    tableContent.thead.tr.th.each {
      td {}
    }
  }
})

请注意,如果要替换现有节点,也可以使用.replaceNode而不是.appendNode。最后,您可以在整个块中使用mkp.yield来输出原始数据。

最后,我们可以使用

恢复HTML
String tableString = new StreamingMarkupBuilder().bind { mkp.yield tableContent }

然后继续做任何我们需要的事情。