2015-11-09 1 views
0

Я использую XMLQuire для создания исправления для получения исправления. Но всегда возвращает нулевое значение:Java jDom2 get Значение тега DigestValue

Xpath используется:

//dft:enviNFe/dft:NFe/Signature/SignedInfo/Reference/DigestValue 

Это один работает:

//k:enviNFe/k:NFe/k:infNFe/k:ide/k:tpAmb 

Функция используется:

XPath xPath = XPath.newInstance(SignatureValue); 
xPath.addNamespace("dft", d.getRootElement().getNamespaceURI()); 
Element node = (Element) xPath.selectSingleNode(d.getRootElement()); 

XML:

<?xml version="1.0" encoding="UTF-8"?> 
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10"> 
    <idLote>1</idLote> 
    <indSinc>1</indSinc> 
    <NFe xmlns="http://www.portalfiscal.inf.br/nfe"> 
    <infNFe Id="NFe411511108929620001566500100000000713243" versao="3.10"> 
     <ide> 
     <cUF>41</cUF> 
     <cNF>63872751</cNF> 
     <natOp>Venda</natOp> 
     <indPag>0</indPag> 
     <mod>65</mod> 
     <serie>1</serie> 
     <nNF>7</nNF> 
     <dhEmi>2015-11-09T08:37:35-02:00</dhEmi> 
     <tpNF>1</tpNF> 
     <idDest>1</idDest> 
     <cMunFG>4108304</cMunFG> 
     <tpImp>4</tpImp> 
     <tpEmis>1</tpEmis> 
     <cDV>3</cDV> 
     <tpAmb>2</tpAmb> 
     <finNFe>1</finNFe> 
     <indFinal>1</indFinal> 
     <indPres>1</indPres> 
     <procEmi>0</procEmi> 
     <verProc>3.0</verProc> 
     </ide> 
     <emit> 
     <CNPJ>108XXXX2000156</CNPJ> 
     <xNome>X XXX XXX</xNome> 
     <xFant>X XXX XXX</xFant> 
     <enderEmit> 
      <xLgr>XXXXX XXX</xLgr> 
      <nro>XXXX</nro> 
      <xBairro>Vila Residencial</xBairro> 
      <cMun>XXXXX</cMun> 
      <xMun>Foz do Iguacu</xMun> 
      <UF>PR</UF> 
      <CEP>XXXXXX</CEP> 
      <cPais>XXXX</cPais> 
      <xPais>Brasil</xPais> 
      <fone>XXX XXX</fone> 
     </enderEmit> 
     <IE>90XXXXX48x5x80</IE> 
     <CRT>1</CRT> 
     </emit> 
     <dest> 
     <CNPJ>99999999000191</CNPJ> 
     <xNome>NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xNome> 
     <enderDest> 
      <xLgr>Travessa Kayaby</xLgr> 
      <nro>400</nro> 
      <xBairro>Jardim Renato Festugato</xBairro> 
      <cMun>4108304</cMun> 
      <xMun>Foz do Iguacu</xMun> 
      <UF>PR</UF> 
      <CEP>85864110</CEP> 
      <cPais>1058</cPais> 
      <xPais>Brasil</xPais> 
      <fone>4599999999</fone> 
     </enderDest> 
     <indIEDest>9</indIEDest> 
     </dest> 
     <det nItem="1"> 
     <prod> 
      <cProd>21753</cProd> 
      <cEAN/> 
      <xProd>NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xProd> 
      <NCM>84099116</NCM> 
      <CFOP>5102</CFOP> 
      <uCom>UN</uCom> 
      <qCom>3.0</qCom> 
      <vUnCom>1.56</vUnCom> 
      <vProd>4.68</vProd> 
      <cEANTrib/> 
      <uTrib>UND</uTrib> 
      <qTrib>3.0</qTrib> 
      <vUnTrib>1.56</vUnTrib> 
      <indTot>1</indTot> 
     </prod> 
     <imposto> 
      <ICMS> 
      <ICMSSN102> 
       <orig>0</orig> 
       <CSOSN>102</CSOSN> 
      </ICMSSN102> 
      </ICMS> 
      <PIS> 
      <PISOutr> 
       <CST>99</CST> 
       <vBC>0.00</vBC> 
       <pPIS>0.00</pPIS> 
       <vPIS>0.00</vPIS> 
      </PISOutr> 
      </PIS> 
      <COFINS> 
      <COFINSOutr> 
       <CST>99</CST> 
       <vBC>0.00</vBC> 
       <pCOFINS>0.00</pCOFINS> 
       <vCOFINS>0.00</vCOFINS> 
      </COFINSOutr> 
      </COFINS> 
     </imposto> 
     </det> 
     <det nItem="2"> 
     <prod> 
      <cProd>21753</cProd> 
      <cEAN/> 
      <xProd>NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xProd> 
      <NCM>84099116</NCM> 
      <CFOP>5102</CFOP> 
      <uCom>UN</uCom> 
      <qCom>3.0</qCom> 
      <vUnCom>1.56</vUnCom> 
      <vProd>4.68</vProd> 
      <cEANTrib/> 
      <uTrib>UND</uTrib> 
      <qTrib>3.0</qTrib> 
      <vUnTrib>1.56</vUnTrib> 
      <indTot>1</indTot> 
     </prod> 
     <imposto> 
      <ICMS> 
      <ICMSSN102> 
       <orig>0</orig> 
       <CSOSN>102</CSOSN> 
      </ICMSSN102> 
      </ICMS> 
      <PIS> 
      <PISOutr> 
       <CST>99</CST> 
       <vBC>0.00</vBC> 
       <pPIS>0.00</pPIS> 
       <vPIS>0.00</vPIS> 
      </PISOutr> 
      </PIS> 
      <COFINS> 
      <COFINSOutr> 
       <CST>99</CST> 
       <vBC>0.00</vBC> 
       <pCOFINS>0.00</pCOFINS> 
       <vCOFINS>0.00</vCOFINS> 
      </COFINSOutr> 
      </COFINS> 
     </imposto> 
     </det> 
     <total> 
     <ICMSTot> 
      <vBC>0.00</vBC> 
      <vICMS>0.00</vICMS> 
      <vICMSDeson>0.00</vICMSDeson> 
      <vBCST>0.00</vBCST> 
      <vST>0.00</vST> 
      <vProd>9.36</vProd> 
      <vFrete>0.00</vFrete> 
      <vSeg>0.00</vSeg> 
      <vDesc>0.00</vDesc> 
      <vII>0.00</vII> 
      <vIPI>0.00</vIPI> 
      <vPIS>0.00</vPIS> 
      <vCOFINS>0.00</vCOFINS> 
      <vOutro>0.00</vOutro> 
      <vNF>9.36</vNF> 
     </ICMSTot> 
     </total> 
     <transp> 
     <modFrete>9</modFrete> 
     <vol> 
      <qVol>0</qVol> 
      <esp>-</esp> 
      <marca>-</marca> 
      <nVol>0</nVol> 
      <pesoL>0</pesoL> 
      <pesoB>0</pesoB> 
     </vol> 
     </transp> 
     <pag> 
     <tPag>01</tPag> 
     <vPag>9.36</vPag> 
     </pag> 
     <infAdic> 
     <infCpl>Venda de Mercadoria</infCpl> 
     </infAdic> 
    </infNFe> 
    <infNFeSupl> 
     <qrCode/> 
    </infNFeSupl> 
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
     <SignedInfo> 
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> 
     <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> 
     <Reference URI="#NFe41151110892962000156650010000000071638727513"> 
      <Transforms> 
      <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> 
      <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> 
      </Transforms> 
      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 
      <DigestValue>mXo6QeJrfJKTp4Jm2W+MRCI6fJI=</DigestValue> 
     </Reference> 
     </SignedInfo> 
     <SignatureValue>Iemd18kXXXXtUyUvD896XEuE2hNiN8tAaeDv54aoXXXXwbMOruPm1JMie5h3K4EAk3BXcRatNycLdhOvXHJU2WVMbUaZsm5UBt3UKDWxj9vR14Ure3tpKL85cSvORXwMrqBG7iX/kTV6wumTZdjYIXc7qTPV14krZTAu7JUKzZ9qkbvjUvaX5A6NGavfK+aSqPL9YPTvSACUEaqgvaOfO/TXAh7t3EkDOshwb9LI1DhbRzUCGG0dLV0m0f/dLA8XKXe2Wa0RvGmNxeO4KqAk1Q9zR+0nHjpaGcGUiOvVhLeJ9ZtzbogoaPZbmUJyMbM4x9aPTQT8bmA==</SignatureValue> 
     <KeyInfo> 
     <X509Data> 
      <X509Certificate>MIIIXXXXXXAxrXtOdw1vDkMIjANBgkqhkiG9w0BAQsFADCBgDELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxNjA0BgNVBAsTLVNlY3JldGFyaWEgZGEgUXXZWl0YSBGZWRlcmFsIGRvIEJyYXNpbCAtIFJGQjEkMCIGA1UEAxMbQUMgSW5zdGl0dXRvIEZlbmFjb24gUkZCIEcyMB4XDTE1MDkyNDAwMDAwMFoXDTE2MDkyMjIzNTk1OVowgfcxCzAJBgNVBAYTAkJSMRMwEQYDVQQKFApJQ1AtQnJhc2lsMQswCQYDVQQIEwJQUjEWMBQGA1UEBxQNRk9aIERPIElHVUFDVTE2MDQGA1UECxQtU2VjcmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgZG8gQnJhc2lsIC0gUkZCMRYwFAYDVQQLFA1SRkIgZS1DTlBKIEExMSUwIwYDVQQLFBxBdXRlbnRpY2FkbyBwb3IgQVIgU2VzY2FwIFBSMTcwNQYDVQQDEy5FTVBPUklPIE5BVFVSQUwgREEgVklMQSBMVERBIE1FOjEwODkyOTYyMDAwMTU2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAumLwXlXQeOjPQ+lPKIjUZq1Aig52z7styqmvFVl2TIyq5AWPwws1el4qdn9QUUTANY+51Pco6g1faYlMI/SFO8CaNPURITkj+4f/+sgYy87cntgwZzh6FADcKiA0unAubKLA8lKRJtuhf2u2+E3k8tfGJHfFmdK+Zwql37wZUxiVbtCmIezia49Fk1re25pFk/ko8vbk60Xc3b0j/dlSjqJNLMzXlDaVbrc5CZlXT76vX3x8y4lJXE8Ze3Uvnz2nVRxH0U7Tuicj5QJh+D18SNVTjdcyeWGLESJeGb3z9UTvC3CMV5Ni1XHGATnDZT5z3+f5RnnU7LryQ8RQoqxiVwIDAQABo4IDejCCA3Ywgb0GA1UdEQSBtTCBsqA+BgVgTAEDBKA1BDMwMTEwMTk5MDAxMDE3MTA0OTY0MDAwMDAwMDAwMDAwMDAwMDAwOTY1MjQ3NzNTRVNQUFKgHAYFYEwBAwKgEwQRTElWSUEgR0FWQSBCRVJTT1SgGQYFYEwBAwOgEAQOMTA4OTI5NjIwMDAxNTagFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwgR5jYWRhc3Ryb0ByZWFsY29udGFiaWxpZGFkZS5uZXQwCQYDVR0TBAIwADAfBgNVHSMEGDAWgBTselvPhkiDtwMVtclNRtbcWnUW3TAOBgNVHQ8BAf8EBAMCBeAwggErBgNVHR8EggEiMIIBHjBeoFygWoZYaHR0cDovL2ljcC1icmFzaWwuYWNmZW5hY29uLmNvbS5ici9yZXBvc2l0b3Jpby9sY3IvQUNJbnN0aXR1dG9GZW5hY29uUkZCRzIvTGF0ZXN0Q1JMLmNybDBdoFugWYZXaHR0cDovL2ljcC1icmFzaWwub3V0cmFsY3IuY29tLmJyL3JlcG9zaXRvcmlvL2xjci9BQ0luc3RpdHV0b0ZlbmFjb25SRkJHMi9MYXRlc3RDUkwuY3JsMF2gW6BZhldodHRwOi8vcmVwb3NpdG9yaW8uaWNwYnJhc2lsLmdvdi5ici9sY3IvQ2VydGlzaWduL0FDSW5zdGl0dXRvRmVuYWNvblJGQkcyL0xhdGVzdENSTC5jcmwwgYYGA1UdIAR/MH0wewYGYEwBAgEiMHEwbwYIKwYBBQUHAgEWY2h0dHA6Ly9pY3AtYnJhc2lsLmFjZmVuYWNvbi5jb20uYnIvcmVwb3NpdG9yaW8vZHBjL0FDLUluc3RpdHV0by1GZW5hY29uLVJGQi9EUENfQUNfSUZlbmFjb25fUkZCLnBkZjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgaAGCCsGAQUFBwEBBIGTMIGQMGQGCCsGAQUFBzAChlhodHRwOi8vaWNwLWJyYXNpbC5hY2ZlbmFjb24uY29tLmJyL3JlcG9zaXRvcmlvL2NlcnRpZmljYWRvcy9BQ19JbnN0aXR1dG9fRmVuYWNvbl9SRkIucDdjMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5jZXJ0aXNpZ24uY29tLmJyMA0GCSqGSIb3DQEBCwUAA4ICAQCaLj82ku42RNyLEq5WZNzfaZjefFfbXGmdbZDeQDV1eYeMArHaoErb6VyFDliEZv0cOR53UkP8Cn2f8KRLJEr0xFNi04xwS/5pycU+S8AT1PDP8nsRENuAAUWWD8z8fhyzaNIsa3CJDd2td8oePJm4pUP0x6tmax0mYGowWKJO56VK6goCH8x+3yIxUET55vNgOhV1bzRdjLyFPQrf7egPTHN6O9c52Bt8uBFBToGNbh7O79sgD/d23C3ClYNKEkPzYZyeAsiKAN5ulhsSFqW0TZKQ8FLCdm/nfZrq9DDZVA++fj5FyNyfgPAn1yRkJ5YD0pAQGoeRTvhhBy+L7+txDsldQSB8XJbI/czaLP8e8b4LEz06MjpWpoBpBwo/Os+ZGZ6EoTADJHlvZM2OaDmc3nm8RXIr4lPPaVP7CgvbAeyHoE2eZ76pN0A81WG4+Oh3x3NfpXywQaQqLCiOozEtVe70bsVJXI4JMl5RHb6AZPhdZ0zv5kZRvgP53vALv1t2VQLDaotYobKXQi+jUSlc+wwV6vNjcFeajPGruRdsmpviEJwlNJTLM/PdEMdgqS7mDGkvOjBZjPkt7NU6OCpaSiJ4jUzE/eP8Q2lI2t97pJyi0XF+hK/LPANruAOHnmnKjcljyX7tm2t5QQwSVxk7KrNXuNzB9b/iaKs+0eGCoQ==</X509Certificate> 
     </X509Data> 
     </KeyInfo> 
    </Signature> 
    </NFe> 
</enviNFe> 

ответ

1

Корневой элемент находится в пространстве имен xmlns="http://www.portalfiscal.inf.br/nfe" и большинстве его детей.

Элемент Signature находится в пространстве имен mlns="http://www.w3.org/2000/09/xmldsig#" и всех его дочерних элементов.

Итак, вам нужно 2 пространств имен в вашем XPath ...

и ... вы должны быть определены с использованием новых XPath API JDOM-2, а не старый. Так, сделайте следующее:

Namespace sig = Namespace.getNamespace("sig", "http://www.w3.org/2000/09/xmldsig#"); 
Namespace nfe = Namespace.getNamespace("nfe", "http://www.portalfiscal.inf.br/nfe"); 

XPathFactory xfac = XPathFactory.instance(); 
XPathExpression<Element> digest = xfac.compile(
    "/nfe:enviNFe/nfe:NFe/sig:Signature/sig:SignedInfo/sig:Reference/sig:DigestValue", 
    Filters.element(), null, sig, nfe); 

String digestValue = digest.evaluateFirst().value(); 

См documentation for compile.

И, пожалуйста, когда вы размещаете вопрос, сделать XML легче читать.

+0

Работайте как очарование, спасибо! –