Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Crear archivo xml con delphi (https://www.clubdelphi.com/foros/showthread.php?t=93774)

Muriel 23-02-2019 17:24:34

Crear archivo xml con delphi
 
Hola compañeros de foro

Les comento que estoy tratando de generar un archivo XML con Delphi 7, ya lo logre hasta cierto punto, funciona bien, pero lo que no sé cómo hacer es esto <complemento xsi:nil="true"/> en Delphi para que el código XML quede así. Abajo des muestro mi código.

Espero que me puedan ayudar.

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj, xmldom, XMLIntf, msxmldom, XMLDoc;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var
   XML : IXMLDOCUMENT;
    Registro, Datos: IXMLNODE;
begin
    XML := NewXMLDocument;
    XML.Encoding := 'UTF-8';
    XML.Options := [doNodeAutoIndent];

    Registro := XML.AddChild('ClientesXML');
    Registro.Attributes['xsi:noNamespaceSchemaLocation']:= 'ClientesXML.xsd';
    Registro.Attributes['xmlns:xsi']:= 'w1.com/2019/XMLSchema-instance'; 

    Datos := Registro.AddChild('cliente');

    Datos.AddChild('nombre').Text := 'JUAN PERES FICTICIO';
    Datos.AddChild('edad').Text := '25';
    Datos.AddChild('numeroDocumenta').Text := '123456';
    Datos.AddChild('complemento'); //esto debe quedar asi 
                                              //lo que no se como hacer

    Datos := Registro.AddChild('detalles');

    Datos.AddChild('direccion').Text := 'Calle Valle Hermoso #123';
    Datos.AddChild('estadoCivil'); //esto debe quedar asi 
    Datos.AddChild('etcEtc').Text := '21312';

    XML.SaveToFile( ExtractFilePath( Application.ExeName ) + 'Cientes.xml' );
end;

 end.

Con esto el XML me queda asi

Código:

<?xml version="1.0" encoding="UTF-8"?>
<ClientesXML xmlns:xsi="estoLoBorre" xsi:noNamespaceSchemaLocation="ClientesXML.xsd"><cliente><nombre>JUAN PERES FICTICIO</nombre><edad>25</edad><numeroDocumenta>123456</numeroDocumenta><complemento/></cliente><detalles><direccion>Calle Valle Hermoso #123</direccion><estadoCivil/><etcEtc>21312</etcEtc></detalles></ClientesXML> yo nesesito que sea ai
<?xml version="1.0" encoding="UTF-8"?>
<ClientesXML xmlns:xsi="estoLoBorre" xsi:noNamespaceSchemaLocation="ClientesXML.xsd"><cliente><nombre>JUAN PERES FICTICIO</nombre><edad>25</edad><numeroDocumenta>123456</numeroDocumenta><complemento xsi:nil="true"/></cliente><detalles><direccion>Calle Valle Hermoso #123</direccion><estadoCivil xsi:nil="true"/><etcEtc>21312</etcEtc></detalles></ClientesXML>


roman 25-02-2019 19:08:02

No tengo Delphi a mano para probar pero viendo tu código parece que sólo necesitas asignar el resultado de Datos.AddChild('complemento') a otra variable Complemento de tipo IXMLNODE y sobre ella asignar el atributo:

Código Delphi [-]
Complemento.Attributes['xsi:nil'] := 'true';

// Saludos

Muriel 25-02-2019 23:40:36

Gracias por respondes roman.
Pero antes de preguntar en el foro probé de esa manera y no se podía posterior a seguía luchando hasta que se me ocurrió de esta manera y me resulto bien.

AddChild('complemento').Attributes['xsi:nil']:= 'true';


Ahora mi mayor problema es que a ese archivo XML tengo que enviar por internet como intercambio de información, aun servidor o host no sé cómo es esto la cosa es que nunca ice cosas como eso.
Si alguien podría brindarme ayuda con eso seria maravilloso.
De ante mano les agradezco mucho.
Saludos.

Casimiro Notevi 26-02-2019 00:01:57

Crea un hilo con tu duda, ponle un título descriptivo y explica lo más claramente posible lo que necesitas y el problema que tienes.
Saludos.


La franja horaria es GMT +2. Ahora son las 22:31:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi