是否可以在
groovy.util.slurpersupport.NodeChild在Grails中?

AppendNode不起作用。

我必须使用xmlparser还是xmlslurper?

最好的祝福,
彼得

最佳答案

绝对有可能! 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输出原始数据。

最后,我们可以使用
String tableString = new StreamingMarkupBuilder().bind { mkp.yield tableContent }

然后继续做我们需要做的一切。

09-11 18:05