Uses XMLIntf;

function FindNode(nome: string; Root: IXMLNode): IXMLNode;
var
  i: Integer;
begin
  Result := nil;
  i := 0;
  while (i < Root.ChildNodes.Count) and (Result = nil) do
    if SameText(Root.ChildNodes.Nodes[i].NodeName, nome) then
      Result := Root.ChildNodes.Nodes[i]
    else
    begin
      Result := FindNode(nome, Root.ChildNodes.Nodes[i]);
      Inc(i);
    end;
end;

Com esta function vc tem o IXMLNode que procura ou nil, se ele não
existir. A primeira chamada Root deve fazer referência à propriedade
DocumentElement do IXMLDocument que vc estiver usando .

Tendo o node, é só chamar o método AddChild dele para adicionar o que vc quiser.
Na hora de codificar, não ficou exatamente como o algoritmo que citei
antes. Mas deve funcionar.

2008/12/22 Fellipe Henrique <felli...@gmail.com>:
> Olá Guionardo, poderia exemplificar? Tentei fazer porém não consegui pegar
> os sub-nodes
>
> Att
> Fellipe H.
>
> 2008/12/20 Guionardo Furlan <guiona...@gmail.com>
>
>> Começando com o root
>>
>> 1.Verificar se o nome do node atual é o que vc está procurando.
>> 2. Se for sim, retorna o node e encerra.
>> 3. Se não, verifica se existem subnodes.
>> 4. Se não, retorna nil e encerra.
>> 5. Se sim, faz um loop percorrendo todos os subnodes e, usando
>> recursividade, chama o procedimento para cada subnode.
>>
>> Mais ou menos isso.
>>
>> 2008/12/19 Fellipe Henrique <felli...@gmail.com <fellipeh%40gmail.com>>:
>>
>> > Amigos, preciso vasculhar um XML inteiro e achar um Node, e ao achar
>> > adicionar um ChildNode nele, como faço isso? Sendo que o Node pode estar
>> em
>> > qualquer lugar na estrutura do XML?
>> >
>> > Obrigado


-- 
Timeo hominem unius libri
Cogito ergo sum - Carpe diem

[]s
Guionardo Furlan
http://guionardo.blogspot.com

Responder a