Ler o valor dentro da tag CDATA de um xml

Delphi

21/03/2012

Estou usando a rotina para pegar um xml e jogar em um treeview.
Só que agora veio um xml com algumas tags CDATA.
E minha função não consegue pegar o valor dentro desta tag.
O trecho do xml é:
- <dest>
<CNPJ>09022519000145</CNPJ>
- <xNome>
- <![CDATA[ FIGUEREDO LIMA & CIA LTDA-ME
]]>
</xNome>
- <enderDest>
- <xLgr>
- <![CDATA[ AV.MARECHAL RONDON,1210 CENTRO
]]>
</xLgr>
<nro>0</nro>
<xBairro>CENTRO</xBairro>
<cMun>5106752</cMun>
<xMun>PONTES E LACERDA</xMun>
<UF>MT</UF>
<CEP>78250000</CEP>
<cPais>1058</cPais>
<xPais>BRASIL</xPais>
<fone>32661980</fone>
</enderDest>
<IE>00133434427</IE>
</dest>

Ai no treeview no os campos xNome e xLgr vazio.

Uso a seguinte função:

procedure TFormImportaxml.GenereteTree(XMLNode: IXMLNode; TreeNode: TTreeNode);
var
NodeText: String;
NewTreeNode: TTreeNode;
I: Integer;
begin
If XMLNode.NodeType <> ntElement then
Exit;

NodeText := XMLNode.NodeName;
If XMLNode.IsTextElement then
begin
NodeText := NodeText + = + XMLNode.NodeValue;
PegaCamposNFe(XMLNode.NodeName, XMLNode.NodeValue);
end;
NewTreeNode := TreeView1.Items.AddChild(TreeNode, NodeText);
If XMLNode.HasChildNodes then
begin
For I := 0 to XMLNode.ChildNodes.Count - 1 do
GenereteTree(XMLNode.ChildNodes[I], NewTreeNode);

end;
end;

Se alguém puder me dar uma luz eu agradeço
Leandro Carvalho

Leandro Carvalho

Curtidas 0

Respostas

Leonardo Xavier

Leonardo Xavier

21/03/2012

Seus xml tem padrão ou pode variar campos?
GOSTEI 0
Leandro Carvalho

Leandro Carvalho

21/03/2012

A unica coisa que pode variar é a tag CDATA. As vezes ela pode ter ou não.
GOSTEI 0
Daniel Bernardo

Daniel Bernardo

21/03/2012

só pra deixar o tópico como resolvido.

penei pra descobrir isso

e a resposta é ChildNodes.FindNode(#cdata-section);



GOSTEI 0
Daniel Bernardo

Daniel Bernardo

21/03/2012

só pra deixar o tópico como resolvido.

penei pra descobrir isso

e a resposta é ChildNodes.FindNode(#cdata-section);

com aspas simples, o editor aqui nao deixou colocar aspas.

Abraço.

GOSTEI 0
POSTAR