Ver Mensaje Individual
  #6  
Antiguo 22-04-2019
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Reputación: 11
bucanero Va camino a la fama
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
    // se asigna el contenido del XML
    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;
Responder Con Cita