TXmlManager leitura de XML do SEFAZ

Desde que a função XmlParser foi descontinuada, estou tentando usar a Classe TXmlManager para ler XML vindos da SEFAZ (por exemplo CTE).

Um exemplo de XML de CTe (retirei boa parte do conteúdo para facilitar o exemplo):


<?xml version="1.0" encoding="UTF-8"?>
<cteProc xmlns="http://www.portalfiscal.inf.br/cte" versao="3.00">
    <CTe xmlns="http://www.portalfiscal.inf.br/cte">
        <infCte versao="3.00" Id="CTe35231182270711001465570000001711881561204880">
            <ide>
                <cUF>35</cUF>
            </ide>
        </infCte>
    </CTe>
</cteProc>

Como fazer a leitura da tag cUF usando a classe TXmlManager? Tentei usar vários métodos, como o XPathGetRootNsList, XPathRegisterNs e xPathGetNodeValue, mas todos retornam uma string vazia.

Olá!

Tente o seguinte:


oXml:xPathRegisterNs("ns", "http://www.portalfiscal.inf.br/cte")  // Registre o Namespace
cUf := oXml:xPathGetNodeValue("/ns:cteProc/ns:CTe/ns:infCte/ns:ide/ns:cUF")  // Faça a pesquisa

Dessa forma o seu exemplo deve funcionar.

Desta forma deu certo!. Eu registrei o ns no xPathRegisterNs, mas não estava colocando o namespace no método xPathGetNodeValue.
Agora fica a dúvida, se estamos registrando o namespace, por que também precisamos fazer referência em xPathGetNodeValue?