Hola IVAND
En tu ejemplo en particular, dentro del campo comprobante lo que va incluido es otro XML codificado, por lo tanto lo que debes de hacer es crear un segundo componente de tipo XMLDocument y asignarle el valor descodificado de ese XML.
Para descodificar puedes utilizar la funcion
HTMLDecode de la unidad
HTTPApp
Aquí te pongo un ejemplo:
Código Delphi
[-]
uses HTTPApp;
function TForm2.LoadComprobante(const AXMLComprobante: String): Boolean;
var
factura, InfoTributaria, InfoFactura: IXMLNode;
NName:String;
begin
Result := False;
try
XMLDocument2.XML.Text := AXMLComprobante;
XMLDocument2.Active := True;
try
factura := XMLDocument2.DocumentElement;
InfoTributaria := factura.ChildNodes['infoTributaria'];
Memo1.Lines.add(InfoTributaria.ChildValues['tipoEmision']);
Memo1.Lines.add(InfoTributaria.ChildValues['razonSocial']);
Memo1.Lines.add(InfoTributaria.ChildValues['nombreComercial']);
InfoFactura := factura.ChildNodes['InfoFactura'];
result := true;
finally
XMLDocument2.Active := False;
end;
except
on E: Exception do
MessageDlg(E.message, mtError, [mbOK], 0);
end;
end;
procedure TForm2.Button1Click(Sender: TObject);
var
Autorizacion: IXMLNode;
begin
XMLDocument1.FileName := OpenDialog1.FileName;
XMLDocument1.Active := True;
try
Autorizacion := XMLDocument1.DocumentElement;
Memo1.Lines.add(Autorizacion.ChildNodes['estado'].Text);
Memo1.Lines.add(Autorizacion.ChildNodes['numeroAutorizacion'].Text);
Memo1.Lines.add(Autorizacion.ChildNodes['fechaAutorizacion'].Text);
Memo1.Lines.add(Autorizacion.ChildNodes['ambiente'].Text);
LoadComprobante(HTMLDecode(Autorizacion.ChildNodes['comprobante'].Text));
finally
XMLDocument1.Active := False;
end;
end;