Axis2,XMLBeans和政府服务 - 处理命名空间

时间:2015-02-06 12:21:36

标签: xml axis2 xmlbeans

因此,我使用Axis 2从WSDL文件(使用XMLBeans)生成存根类,并且还从其XSD文件生成实体。

问题是:生成的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选项。

我尝试了一些假设来解决这个问题,但都无法解决。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我最终更改了生成的.java文件。

问题似乎是提供的wsdl