我有这个XML,
<soapenv:Envelope xmlns:v2="http://ns1/" xmlns:ifx="http://www.somenamespace.org/IFX_150">
<soapenv:Header></soapenv:Header>
<soapenv:Body>
<v2:AcctInqRq>
<ifx:SomeTag></ifx:SomeTag>
<v2:AcctInqRq>
</soapenv:Body>
</soapenv:Envelope>
我正在尝试使用xmlslurper将其复制到测试步骤。
def request = new XmlSlurper().parseText( holderRequest )
.declareNamespace( v2:'http://ns1/',
ifx:"http://www.somenamespace.org/IFX_150")
def xmlBuilder = new StreamingMarkupBuilder()
writer = xmlBuilder.bind {
mkp.declareNamespace(ifx:"http://www.somenamespace.org/IFX_150",v2:"http://ns1/"
mkp.yield request
}
复制后,测试步骤如下所示
<soapenv:Envelope>
<soapenv:Header></soapenv:Header>
<soapenv:Body>
<v2:AcctInqRq xmlns:v2="http://ns1/">
<ifx:SomeTag xmlns:ifx="http://www.somenamespace.org/IFX_150" ></ifx:SomeTag>
<v2:AcctInqRq>
</soapenv:Body>
</soapenv:Envelope>
为什么未按原样复制名称空间声明?我想要在顶部而不是在每个标签中声明所有名称空间。请帮忙。
答案 0 :(得分:1)
您可以关闭名称空间支持,并按原样传递它们吗?
def request = new XmlSlurper( false, false ).parseText( holderRequest )
def output = new StreamingMarkupBuilder().bind {
mkp.yield request
}