在groovy xml值打印中的问题

时间:2016-05-28 07:39:43

标签: groovy xmlslurper

我的xml看起来像

<?xml version="1.0" encoding="UTF-8"?>
<pnode>
 <mdsC:adf-mds-config xmlns="http://xmlns.oracle.com/adf/mds/config">
    <mds-config xmlns="http://xmlns.oracle.com/mds/config">
      <persistence-config>
        <metadata-namespaces>
          <namespace path="/soa/shared" metadata-store-usage="mstore-usage_1"/>
 </metadata-namespaces>
 </persistence-config>
</mds-config>
  </mdsC:adf-mds-config>
</pnode>

我正在尝试打印元数据命名空间子项,如下所示:

def destXml = new XmlSlurper(false,false).parse("above xml file")
println "${groovy.xml.XmlUtil.serialize(destXml.'adf-mds-config'.'mds-config'.'persistence-config'.'metadata-namespaces')}"

但它会引发异常,如:

[Fatal Error] :2:1: Premature end of file.
ERROR:  'Premature end of file.'
Caught: groovy.lang.GroovyRuntimeException: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 1; Premature end of file.
groovy.lang.GroovyRuntimeException: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 1; Premature end of file.
    at mergeAdfConfig$_run_closure6.doCall(mergeAdfConfig.groovy:143)
    at mergeAdfConfig$_run_closure6.doCall(mergeAdfConfig.groovy)
    at mergeAdfConfig$_run_closure7.doCall(mergeAdfConfig.groovy:205)
    at mergeAdfConfig.run(mergeAdfConfig.groovy:190)

根据我的观察,前缀mdsC:导致问题。但不知道为什么以及如何处理这个

1 个答案:

答案 0 :(得分:-1)

看起来你错过了一个合适的命名空间规范。在“mdsC:adf-mds-config”元素中将“xmlns”更改为“xmlns:mdsC”。不要改变另一个。