Ler o valor dentro da tag CDATA de um xml
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
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
Curtidas 0
Respostas
Leonardo Xavier
21/03/2012
Seus xml tem padrão ou pode variar campos?
GOSTEI 0
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
21/03/2012
só pra deixar o tópico como resolvido.
penei pra descobrir isso
e a resposta é ChildNodes.FindNode(#cdata-section);
penei pra descobrir isso
e a resposta é ChildNodes.FindNode(#cdata-section);
GOSTEI 0
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.
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