【问题标题】:appendNode with namespace in Groovy在 Groovy 中使用命名空间的 appendNode
【发布时间】:2022-03-23 20:03:26
【问题描述】:

我对这篇文章有一个后续问题 appendNode using xmlSlurper in a specific position 。是否可以使用命名空间添加 Salutation 标签,例如,实现以下输出

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<prnReq>
  <ltrPrnReqs>
    <ltrPrnReq>
      <ltrData>
        <ns1:Salutation xmlns:ns1 = \"http://namespace\">text</Salutation>
      </ltrData>
    </ltrPrnReq>
  </ltrPrnReqs>
</prnReq>

那里给出的代码是

def xmlString = \"\"\"<prnReq>
    <ltrPrnReqs>
        <ltrPrnReq>
            <ltrData>encoded64 text</ltrData>
        </ltrPrnReq>
    </ltrPrnReqs>
</prnReq>\"\"\"
def xml = new XmlSlurper().parseText(xmlString)
def ltrData = xml.\'**\'.find{it.name() == \'ltrData\'}
ltrData.replaceBody()
ltrData.appendNode {
  Salutation(\'text\')
}
println groovy.xml.XmlUtil.serialize(xml)

上面的代码产生下面的输出,但我也想添加命名空间

<?xml version=\"1.0\" encoding=\"UTF-8\"?><prnReq>
  <ltrPrnReqs>
    <ltrPrnReq>
      <ltrData>
        <Salutation>text</Salutation>
      </ltrData>
    </ltrPrnReq>
  </ltrPrnReqs>
</prnReq>

    标签: xml groovy namespaces append xmlslurper


    【解决方案1】:

    知道了。

    ltrData.replaceBody()
    ltrData.appendNode {
      'ns2:Salutation'('text',['xmlns:ns2':'http://namespace'])
    }
    

    【讨论】:

      猜你喜欢
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多