Java 使用xpath从soap服务获取响应(错误:前缀必须解析为名称空间:soap)

Java 使用xpath从soap服务获取响应(错误:前缀必须解析为名称空间:soap),java,xpath,soap,apache-camel,Java,Xpath,Soap,Apache Camel,我正在使用ApacheCamel使用soap服务。我收到以下答复: INFO 17:49:59.662 - <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:consultaCEPResponse xmlns:ns2="http://cliente.bean.master.sigep.bsb.cor

我正在使用ApacheCamel使用soap服务。我收到以下答复:

INFO 17:49:59.662 - 
   <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
       <soap:Body>
           <ns2:consultaCEPResponse xmlns:ns2="http://cliente.bean.master.sigep.bsb.correios.com.br/">
                <return>
                     <bairro>zzzzzz</bairro>
                     <cep>000000</cep>
                     <cidade>tttttt</cidade>
                     <complemento2>yyyyy</complemento2>
                     <end>xxxxxxxx</end>
                     <uf>wwwww</uf>
                 </return>
          </ns2:consultaCEPResponse>
     </soap:Body>
</soap:Envelope>

}您可能应该在XPath表达式中添加缺少的名称空间声明。比如:

transform().xpath("/soap:Envelope/soap:Body/ns2:consultaCEPResponse/return//text()",  
                    new Namespaces("soap", "http://schemas.xmlsoap.org/soap/envelope/")
        .add("ns2", "http://cliente.bean.master.sigep.bsb.correios.com.br/"))
如果这不起作用,一种方法也可以是:

transform().xpath("//*[local-name()='return']//text()")

注意:我已经在XPath表达式(
//text()
)中添加了一个
//code>,因为没有直接从返回元素派生的文本,但现在它将所有内容打印在同一行上:Jardim das Acácias0407900são PauloAvenida Roque Petroni Júnior 1089SP而不是:Jardim das Acácias0407900súo PauloAvenida Roque Petroni Júnior 1089SP如果将XPath表达式中的
//text()
替换为
/*
,会发生什么?
transform().xpath("//*[local-name()='return']//text()")