0
因此,我使用Axis 2从WSDL文件(使用XMLBeans)生成存根类,并且还从其XSD文件生成实体。Axis2,XMLBeans和政府服务 - 处理命名空间
问题是:产生的envolope是这样的:
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Header>
<nfeCabecMsg soapenv:mustUnderstand="false" xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao">
<versaoDados>3.10</versaoDados>
<cUF>51</cUF>
</nfeCabecMsg>
</soapenv:Header>
<soapenv:Body>
<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao">
<enviNFe versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">
<idLote>1</idLote>
<indSinc>0</indSinc>
<NFe>
<!-- supressed -->
</NFe>
</enviNFe>
</nfeDadosMsg>
</soapenv:Body>
</soapenv:Envelope>
更具体地说,问题奠定了在这一点上:
<enviNFe versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">
<idLote>1</idLote>
<indSinc>0</indSinc>
<NFe>
<!-- supressed -->
</NFe>
</enviNFe>
但是,对于一些随机原因,他们希望它是这样的:
<enviNFe versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">
<idLote>1</idLote>
<indSinc>0</indSinc>
<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
<!-- supressed -->
</NFe>
</enviNFe>
是的,复制xmlns
父母在只是这个孩子,我知道这是没有意义的,但我无法控制它。
为了防止其他疯狂,我已经替换生成的存根类中的代码,更准确地说,我添加了setUseDefaultNamespace
选项。
我尝试了一些假设来解决这个问题,但都没有成功。我怎样才能做到这一点?
作为一个建议,我建议你转移到JAX-WS。就我个人而言,我喜欢XMLBeans来创建XML数据库,但这就是它。 Axis 2是一个真正的痛苦,永远无法使用它来管理Web服务。 – marcolopes 2015-02-07 03:48:45