Versão atual:

Problema leitura elementos array XML com tXMLManager

Estou precisando de uma ajuda para utilizar a classe tXMLManager, meu problema é quando o XML possui um elemento com vários itens (como um array), com o exemplo abaixo eu até consegui ler o elemento [1], porém quando passa para o segundo em diante ele simplesmente não retorna nada. Alguém sabe dizer como faz para ler os demais elementos do XML? A documentação é muito pouca e não mostra como realmente fazer, apenas diz o que cada método faz sem um exemplo muito claro. OBS.: O fonte está bem resumido só para exemplicar a situação.


<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:averbaNFeResponse xmlns:ns1="urn:ATMWebSvr">
<Response>
<Numero>92248</Numero>
<Serie>1</Serie>
<Filial/>
<CNPJCli>08348609000168</CNPJCli>
<TpDoc>3</TpDoc>
<Erros>
<Erro>
<Codigo>034</Codigo>
<Descricao>Documento com data de emissao superior a 90 dias.</Descricao>
<ValorInformado>2021-11-20</ValorInformado>
</Erro>
<Erro>
<Codigo>035</Codigo>
<Descricao>erro de teste</Descricao>
<ValorInformado>2021-12-20</ValorInformado>
</Erro>
</Erros>
</Response>
</ns1:averbaNFeResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
cErro    := ''
oXML    := tXMLManager():New()
oXML:Parse(cXml)
oXML:XPathRegisterNs( "SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/" )
oXML:XPathRegisterNs( "ns1", "urn:ATMWebSvr" )

For nX := 1 to oXML:XPathChildCount('/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:averbaNFeResponse/Response/Erros')
    cErro    += oXML:XPathGetNodeValue('/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:averbaNFeResponse/Response/Erros['+Ltrim(Str(nX))+']/Descricao')+CRLF
Next

Versões (2):

Ver a versão formatada

Problema leitura elementos array XML com tXMLManager

Comentário

new question