Ver Mensaje Individual
  #774  
Antiguo 08-06-2021
Band Band is offline
Miembro
 
Registrado: may 2021
Posts: 35
Reputación: 0
Band Va por buen camino
Buenas,

estoy intentando extraer la firma de los xml, pero no consigo referenciar al nodo ds:Signaturevalue.

A continuación os paso el código reducido de cómo lo hago:

Código Delphi [-]
docXML := CreateOleObject('Msxml2.DOMDocument.6.0');
docXML.Load(path+'\'+fichero);

ns := 'xmlns:T=''urn:ticketbai:emision'' xmlns:ds=''http://www.w3.org/2000/09/xmldsig#'' xmlns:xsi=''http://www.w3.org/2001/XMLSchema-instance''';

docXML.setProperty('SelectionNamespaces', ns);
docXML.setProperty('SelectionLanguage', 'XPath');

NodeList := docXML.selectNodes('//T:TicketBai/ds:Signature/ds:SignatureValue');


Considero que así sería la forma correcta de acceder al nodo, sin embargo "NodeList" es un nulo.
Si quiero obtener los nodos hijo de "T:TicketBai", lo hago así:

Código Delphi [-]
NodeList := docXML.selectNodes('//T:TicketBai/*');

Y me devuelve todos los nodos hijos de T:TicketBai, excepto el ds:Signature. La variable ns, que contiene los namespace, también considero que es correcta, puesto que si modifico los namespaces declarados ahí, entonces al ejecutar el
Código Delphi [-]
docXML.selectNodes('//T:TicketBai/ds:Signature/ds:SignatureValue')
se me queja de que los nombres de espacios son incorrectos.

Por ahora, solo puedo hacerlo con Msxml2.DOMDocument.6.0 y debería poderse pero no encuentro donde estoy fallando.

Alguien extrae la firma de esta manera o alguien me puede orientar?


Muchas gracias
Responder Con Cita