A ver ahora:
Código Delphi
[-]function BuscaSignatureValue(documento: string): string;
var xml: IXMLDocument;
ANode1: IXMLNode;
i: integer;
begin
result := '';
try
xml := LoadXmlDocument(documento);
for i := 0 to xml.DocumentElement.ChildNodes.Count - 1 do
begin
if xml.DocumentElement.ChildNodes.Nodes[i].NodeName = 'ds:Signature' then
begin
ANode1 := xml.DocumentElement.ChildNodes.Nodes[i];
if ANode1.ChildNodes.FindNode('ds:SignatureValue') <> nil then
begin
result := ANode1.ChildNodes['ds:SignatureValue'].Text;
result := AnsiReplaceStr(result, #10, ''); result := Copy(Trim(result), 1, 100); break;
end;
end;
end;
finally
FreeAndNil(xml);
end;
end;
No sé por qué FindNode no encuentra "ds:Signature", de ahí el bucle buscando por el NoneName, que ahí si lo encuentra.