Axis2、XMLBeans 和政府服务——处理名称空间
Axis2, XMLBeans and Government services - dealing with namespaces
所以,我使用 Axis 2 从 WSDL 文件(使用 XMLBeans)生成存根 classes,并且还从它们的 XSD 文件生成了实体。
问题是:生成的信封是这样的:
<?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>
是的,在 中复制 parent 的 xmlns
只是这个 child,我知道这没有意义,但我无法控制它。
为了防止其他疯狂行为,我已经在生成的存根 class 中替换了代码,更准确地说,我正在添加 setUseDefaultNamespace
选项。
我尝试了一些假设来解决这个问题,但 none 奏效了。我该怎么做?
我最终更改了生成的 .java
个文件。
问题似乎出在提供的 wsdl
上。
所以,我使用 Axis 2 从 WSDL 文件(使用 XMLBeans)生成存根 classes,并且还从它们的 XSD 文件生成了实体。
问题是:生成的信封是这样的:
<?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>
是的,在 中复制 parent 的 xmlns
只是这个 child,我知道这没有意义,但我无法控制它。
为了防止其他疯狂行为,我已经在生成的存根 class 中替换了代码,更准确地说,我正在添加 setUseDefaultNamespace
选项。
我尝试了一些假设来解决这个问题,但 none 奏效了。我该怎么做?
我最终更改了生成的 .java
个文件。
问题似乎出在提供的 wsdl
上。