Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy XMLSlurper appendNode未看到更改_Groovy_Xmlslurper - Fatal编程技术网

Groovy XMLSlurper appendNode未看到更改

Groovy XMLSlurper appendNode未看到更改,groovy,xmlslurper,Groovy,Xmlslurper,我在使用XMLSlurper更新XML文档时遇到问题。大多数情况下都是有效的,但在某些情况下,查找并没有找到我刚刚附加的节点。新节点在处理结束时存在,但在添加子节点时没有找到。 我发现了一篇关于XMLSlurper的帖子,上面说要找到新节点需要再次调用parseText和/或StreaMarkupBuilder,请参见下文。真正地这看起来太含糊了,我想我应该核实一下 下面是一段代码片段。即使刚刚添加了节点,查找也不会得到任何子节点 codeNode.appendNode {

我在使用XMLSlurper更新XML文档时遇到问题。大多数情况下都是有效的,但在某些情况下,查找并没有找到我刚刚附加的节点。新节点在处理结束时存在,但在添加子节点时没有找到。 我发现了一篇关于XMLSlurper的帖子,上面说要找到新节点需要再次调用parseText和/或StreaMarkupBuilder,请参见下文。真正地这看起来太含糊了,我想我应该核实一下

下面是一段代码片段。即使刚刚添加了节点,查找也不会得到任何子节点

    codeNode.appendNode {   
    'lab:vendorData'() {}
}
vendorNode = codeNode.children().find { it.name() == "vendorData" } 
appendNode不直接修改slurped文档。使用StreamingMarkupBuilder写出文档时,会动态应用编辑。


为什么我找不到我的新节点

这就是我要做的。不优雅,但已通过更新问题:

    ...
codeNode.appendNode {   
    'lab:vendorData'() {}
}
//-- must re-slurp to see appended node
labDoc = new XmlSlurper().parseText(serializeXml(labDoc))
codeNode = getResultNodeFor( nextResult.getCode() );
vendorNode = codeNode.children().find { it.name() == "vendorData" }
...
def String serializeXml(GPathResult xml){
XmlUtil.serialize(new StreamingMarkupBuilder().bind {
        mkp.declareNamespace("lab", "www.myco.com/LabDocument")
        mkp.yield labDoc
  } )

}

您找到的邮件列表帖子是correctmkp.yield xml而不是labDoc?