2015-02-06 68 views
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选项。

我尝试了一些假设来解决这个问题,但都没有成功。我怎样才能做到这一点?

+0

作为一个建议,我建议你转移到JAX-WS。就我个人而言,我喜欢XMLBeans来创建XML数据库,但这就是它。 Axis 2是一个真正的痛苦,永远无法使用它来管理Web服务。 – marcolopes 2015-02-07 03:48:45

回答

0

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

这个问题似乎是提供的wsdl的。