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 上。