Muriel
23-02-2019, 17:24:34
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.
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 <complemento xsi:nil="true"/>
//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 <estadoCivil xsi:nil="true"/>
Datos.AddChild('etcEtc').Text := '21312';
XML.SaveToFile( ExtractFilePath( Application.ExeName ) + 'Cientes.xml' );
end;
end.
Con esto el XML me queda asi
<?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>
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.
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 <complemento xsi:nil="true"/>
//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 <estadoCivil xsi:nil="true"/>
Datos.AddChild('etcEtc').Text := '21312';
XML.SaveToFile( ExtractFilePath( Application.ExeName ) + 'Cientes.xml' );
end;
end.
Con esto el XML me queda asi
<?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>