Ver Mensaje Individual
  #7  
Antiguo 20-10-2012
nnebli nnebli is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 14
Reputación: 0
nnebli Va por buen camino
Ante todo pido disculpas por no cumplir lo dicho, no ha sido mi intención. A veces hay más cosas que hacer de las que se pueden y no he podido subir la informaición que tegon yo sobre los XML.

Esto es con lo que yo estoy trabajando y me ha servido para crear XML más o menos complejos:

Nota: Te creas una ficha (un nuevo poyecto) y en ella pones varios botones para llamar a los procedimientos que se indican: Button2Click, Button3Click, etc. Copiando lo que ponen estos procedimientos te debería funcionar. Te pego el pequeño programilla que tengo de ejemplo, copia lo que necesites dentro de tu Forn: (si tienes cualquier duda, lo dices, intentaré ir viendo si hay dudas).

Para ir comprobando como funciona, ves en orden, ejecuta primero: Button2Click y luego el resto, ya que de lo contrario, lo mismo trata de leer un archivo XML que no existe y te dará error.

Saludos. Espero que te sea de utilidad. (Yo trabajo con Delphi 7)


Código Delphi [-]
unit UGeneraFicherosEnXML;
interface
uses
XMLDoc,XMLIntf,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBClient, xmldom, msxmldom, ExtCtrls;
type
TGeneraFicherosEnXML = class(TForm)
Button2: TButton;
XMLDocument1: TXMLDocument;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Bevel1: TBevel;
Label2: TLabel;
Label1: TLabel;
Bevel2: TBevel;
Button1: TButton;
procedure TeclaPulsada(Sender: TObject; var Key: Char);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
GeneraFicherosEnXML: TGeneraFicherosEnXML;
 
implementation
{$R *.dfm}
 
procedure TGeneraFicherosEnXML.TeclaPulsada(Sender: TObject; var Key: Char);
begin
If Key = #27 Then Close;
end;
 
procedure TGeneraFicherosEnXML.Button2Click(Sender: TObject);
var
archivoXML: TXMLDocument;
Nodo,NDatosGenerales,NMensajeFacturacion,NCabecera,NDatosFinales : IXMLNode;
begin
archivoXML := TXMLDocument.Create(Application);
try
// Activamos el archivo XML
archivoXML.Active := True;
archivoXML.Version:='1.0';
archivoXML.Encoding:='UTF-8';
 
// Creamos el elemento principal: EsteEsElementoPrincipal //
NMensajeFacturacion := archivoXML.AddChild('EsteEsElementoPrincipal');
NMensajeFacturacion.Attributes['Firmar'] := 'NO';
 
// Ponemos el elemento que denominamos: Cabecera //
NCabecera := NMensajeFacturacion.AddChild( 'Cabecera' );
// ponemos elementos hijos del anterior que era 'Cabecera'
Nodo := NCabecera.AddChild( 'FechaSolicitud' );
Nodo.Text := '2012-09-08T11:57:31+01:00';
Nodo := NCabecera.AddChild( 'Version' );
Nodo.Text := '02';
 
// Ponemos el elemento: DatosGenerales - Dentro del elemento Cabecera
NDatosGenerales := NCabecera.AddChild( 'DatosGenerales' );
Nodo := NDatosGenerales.AddChild( 'Calle' );
Nodo.Text := 'Del río, 3';
Nodo := NDatosGenerales.AddChild( 'Municipio' );
Nodo.Text := 'Fuenlabrada';
 
// Ponemos el elemento: DatosFinales //
NDatosFinales := NMensajeFacturacion.AddChild( 'DatosFinales' );
// ponemos elementos hijos del anterior que era 'DatosFinales'
Nodo := NDatosFinales.AddChild( 'Enviado' );
Nodo.Text := '2012-09-08';
Nodo := NDatosFinales.AddChild( 'ConfirmacionRecepcion' );
Nodo.Text := 'SI';
 
// guardamos los datos del fichero con el nombre indicado
archivoXML.SaveToFile(ExtractFilePath(Application.ExeName) + 'Fichero en XML de prueba.xml');
 
finally
archivoXML.Free;
end;
 
end;
procedure TGeneraFicherosEnXML.Button3Click(Sender: TObject);
var
Cliente: IXMLNode;
begin
// LEYENDO EL VALOR DE LOS NODOS
XMLDocument1.LoadFromFile( ExtractFilePath( Application.ExeName ) + 'Fichero en XML de prueba.xml' );
XMLDocument1.Active := True;
Cliente := XMLDocument1.DocumentElement.ChildNodes[0];
ShowMessage( Cliente.ChildNodes['FechaSolicitud'].Text );
end;
procedure TGeneraFicherosEnXML.Button4Click(Sender: TObject);
var
Cliente: IXMLNode;
begin
// MODIFICANDO EL VALOR DE LOS NODOS
XMLDocument1.LoadFromFile( ExtractFilePath( Application.ExeName ) + 'Fichero en XML de prueba.xml' );
XMLDocument1.Active := True;
Cliente := XMLDocument1.DocumentElement.ChildNodes[0];
Cliente.ChildNodes['FechaSolicitud'].Text := 'Nueva fecha 19-10-2012';
XMLDocument1.SaveToFile( ExtractFilePath( Application.ExeName ) + 'Fichero en XML de prueba.xml' );
end;
 
procedure TGeneraFicherosEnXML.Button5Click(Sender: TObject);
var
Cliente, Nodo: IXMLNode;
begin
// AÑADIENDO NODOS
XMLDocument1.LoadFromFile( ExtractFilePath( Application.ExeName ) + 'Fichero en XML de prueba.xml' );
XMLDocument1.Active := True;
Cliente := XMLDocument1.DocumentElement.AddChild( 'EsteNodoHaSidoAnnadido' );
Nodo := Cliente.AddChild( 'NuevoNodoAnnadido' );
Nodo.Text := 'Datos annadidos 1';
Nodo := Cliente.AddChild( 'FechaAnnadido' );
Nodo.Text := '19-10-2012';
XMLDocument1.SaveToFile( ExtractFilePath( Application.ExeName ) + 'Fichero en XML de prueba.xml' );
 
end;
 
procedure TGeneraFicherosEnXML.Button6Click(Sender: TObject);
begin
// BORRANDO NODOS
XMLDocument1.LoadFromFile( ExtractFilePath( Application.ExeName ) + 'Fichero en XML de prueba.xml' );
XMLDocument1.Active := True;
XMLDocument1.DocumentElement.ChildNodes.Delete( 0 );
XMLDocument1.SaveToFile( ExtractFilePath( Application.ExeName ) + 'Fichero en XML de prueba.xml' );
 
end;
 
procedure TGeneraFicherosEnXML.Button1Click(Sender: TObject);
begin
Close;
end;
 
end.

Última edición por Casimiro Notevi fecha: 20-10-2012 a las 11:12:24.
Responder Con Cita