我正在编写一个 Groovy 脚本来解析来自 Web 服务的 SOAP 响应,并且 XML 在文档中间指定了一个命名空间:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<AuthenticateResponse xmlns="KaseyaWS">
<AuthenticateResult>
<SessionID>xxxxxxxxxx</SessionID>
<Method>Authenticate</Method>
<TransactionID>4228</TransactionID>
<ErrorMessage/>
<ErrorLocation/>
</AuthenticateResult>
</AuthenticateResponse>
</soap:Body>
</soap:Envelope>
命名空间没有指定名称,它只适用于<AuthenticateResponse xmlns="KaseyaWS">
节点内的所有内容,但我仍然希望能够解析它。
从该方法返回的GPathResultparseText()
允许您调用declareNameSpace(Map m)
以将命名空间添加到文档,如下所示:
def slurper = XmlSlurper().parseText(someXMLText).declareNamespace(soap:'http://schemas.xmlsoap.org/soap/envelope/')
但我不明白如何调用GPathResultdeclareNamespace()
来指定匿名命名空间()。xmlns="KaseyaWS"