Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-02-2016
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 2.824
Poder: 13
newtron Va camino a la fama
Problema al generar fichero XML usando TXMLDocument

Hola a tod@s.

Como algunos de vosotros sabéis para el tema de la creación del nuevo fichero SEPA con XML estoy usando TXMLDocument pero me encuentro un problema.

Tengo que crear un nodo con atributos de forma que consiga este resultado:
Cita:
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CstmrDrctDbtInitn>
para esto hago lo siguiente:
Código Delphi [-]
      XMLMain := XMLInit.AddChild('Document');
        XMLMain.Attributes['xmlns'] := 'urn:iso:std:iso:20022:tech:xsd:pain.008.001.02';
        XMLMain.Attributes['xmlns:xsi'] := 'http://www.w3.org/2001/XMLSchema-instance';
Esto lo hago en mi pc y funciona perfectamente, el problema es que en el pc del primer cliente que lo prueba, con la misma instrucción me generar lo siguiente:
Cita:
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CstmrDrctDbtInitn xmlns="">
Si os fijáis, en la segunda línea se añade el texto xmlns="" siendo el programa el mismo, lo único es que se ejecuta en otro pc.

¿Es posible que haya algo en la configuración de windows que provoque este comportamiento?

Gracias y un saludo
__________________
Be water my friend.

Última edición por Casimiro Notevi fecha: 15-02-2016 a las 17:14:01.
Responder Con Cita
  #2  
Antiguo 15-02-2016
Avatar de Osorio
Osorio Osorio is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 248
Poder: 15
Osorio Va por buen camino
Algo parecido

A mi me paso algo parecido y finalmente me quedó de esta manera:

Código Delphi [-]
procedure TFCamion.Button1Click(Sender: TObject);
const
  DestPath = 'ExampleDelphitoxml.xml';
var
  Document: IXMLDocument;
  NodeElement, NodoBody, NodoDatos: IXMLNode;
begin
  Document := TXMLDocument.Create(nil);
  Document.Options := [doNodeAutoIndent];
  Document.Active := True;
  Document.Version := '1.0';
  Document.Encoding:= 'UTF-8';

  Document.DocumentElement := Document.CreateNode('soapenv:Envelope', ntElement, '');
  Document.DocumentElement.Attributes['xmlns:soapenv'] := 'http://schemas.xmlsoap.org/soap/envelope/';
  Document.DocumentElement.Attributes['xmlns:rem'] := 'http://remote.ipaserver.puerta.gpc.com/';


  NodeElement := Document.DocumentElement.AddChild('soapenv:Header');

  NodoBody := Document.DocumentElement.AddChild('soapenv:Body');
  NodeElement := NodoBody.AddChild('rem:getTakeWeightTask');

          nododatos:= NodeElement.AddChild ('placa','',false,-1 );
          nododatos.Text:= 'R29' ;


          nododatos:= NodeElement.AddChild('Terminal','',false, -1);//Notese aqui que el addchild lleva otros parametros (false por ejemplo para que omita el prefijo

          nododatos.Text:= 'SPC';
  Document.SaveToFile(DestPath);
  memo1.Lines.Clear;
  memo1.Lines.LoadFromFile(DestPath);
  DeleteFile(DestPath);
end;
Disculpen que mi pc extrañamente no me permitió colocar en codigo delphi. Si alguien colabora gracias desde ya.

Saludos.
__________________
“La programación es una carrera entre los desarrolladores de software, intentando construir mayores y mejores programas a prueba de idiotas, y el universo, intentando producir mayores y mejores idiotas. Por ahora va ganando el Universo”

Última edición por Casimiro Notevi fecha: 15-02-2016 a las 19:28:09.
Responder Con Cita
  #3  
Antiguo 15-02-2016
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 149
Poder: 9
orodriguezca Va por buen camino
Para evitar está situación cada nodo hijo que se agregue al XML debe tener exactamente el mismo namspace de el documento o al menos así me funciona a mi. Por ejemplo:

Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var
  Document: IXMLDocument;
  iNode: IXMLNode;
  Myxmlns: string;
begin
  Document := TXMLDocument.Create(nil);
  Document.Options := [doNodeAutoIndent] ;
  Document.Active := True;
  Document.Version := '1.0';
  Document.Encoding:= 'UTF-8';
  Myxmlns := 'urn:iso:std:iso:20022:tech:xsdain.008.001.02';

  Document.DocumentElement := Document.CreateNode('Document');
  Document.DocumentElement.Attributes['xmlns'] := Myxmlns;
  Document.DocumentElement.Attributes['xmlns:xsi'] := 'http://www.w3.org/2001/XMLSchema-instance';
  iNode := Document.DocumentElement.AddChild('CstmrDrctDbtInitn',  Myxmlns);
end;
Responder Con Cita
  #4  
Antiguo 16-02-2016
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 2.824
Poder: 13
newtron Va camino a la fama
Gracias a los dos. Haré pruebas y ya comento.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #5  
Antiguo 16-02-2016
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 668
Poder: 13
olbeup Va camino a la fama
Cita:
Empezado por newtron Ver Mensaje
Hola a tod@s.

Como algunos de vosotros sabéis para el tema de la creación del nuevo fichero SEPA con XML estoy usando TXMLDocument pero me encuentro un problema.

Tengo que crear un nodo con atributos de forma que consiga este resultado:

para esto hago lo siguiente:
Código Delphi [-]
      XMLMain := XMLInit.AddChild('Document');
        XMLMain.Attributes['xmlns'] := 'urn:iso:std:iso:20022:tech:xsd:pain.008.001.02';
        XMLMain.Attributes['xmlns:xsi'] := 'http://www.w3.org/2001/XMLSchema-instance';
Esto lo hago en mi pc y funciona perfectamente, el problema es que en el pc del primer cliente que lo prueba, con la misma instrucción me generar lo siguiente:

Si os fijáis, en la segunda línea se añade el texto xmlns="" siendo el programa el mismo, lo único es que se ejecuta en otro pc.

¿Es posible que haya algo en la configuración de windows que provoque este comportamiento?

Gracias y un saludo
Hola Neutron,

Me volví loco buscando la solución y aquí esta:
Código Delphi [-]
      XMLMain := XMLInit.AddChild('Document', 'urn:iso:std:iso:20022:tech:xsdain.008.001.02');
        XMLMain.Attributes['xmlns:xsi'] := 'http://www.w3.org/2001/XMLSchema-instance';
Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por olbeup fecha: 16-02-2016 a las 12:07:16.
Responder Con Cita
  #6  
Antiguo 16-02-2016
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 2.824
Poder: 13
newtron Va camino a la fama
Cita:
Empezado por olbeup Ver Mensaje
Hola Neutron,

Me volví loco buscando la solución y aquí esta:
Código Delphi [-] XMLMain := XMLInit.AddChild('Document', 'urn:iso:std:iso:20022:tech:xsdain.008.001.02'); XMLMain.Attributes['xmlns:xsi'] := 'http://www.w3.org/2001/XMLSchema-instance';

Un saludo.
Gracias por tu respuesta pero estoy probando tu código y me sigue saliendo en la linea siguiente el "biznago" que no deseo:

<CstmrDrctDbtInitn xmlns="">

Ese xmlns="" me sobra porque la instrucción que pongo es

Código Delphi [-]
      XMLFileHeader := XMLMain.AddChild('CstmrDrctDbtInitn','');

Saludos
__________________
Be water my friend.

Última edición por newtron fecha: 16-02-2016 a las 13:05:30.
Responder Con Cita
  #7  
Antiguo 16-02-2016
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 149
Poder: 9
orodriguezca Va por buen camino
La intrucción que deberias colocar es :

Código Delphi [-]
XMLFileHeader := XMLMain.AddChild('CstmrDrctDbtInitn', 'urn:iso:std:iso:20022:tech:xsdain.008.001.02');

Debes usar el mismo namespace del documento.
Responder Con Cita
  #8  
Antiguo 16-02-2016
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 2.824
Poder: 13
newtron Va camino a la fama
Ok.

Ya pillo la idea, he modificado el código y parece que sale correcto.

Gracias a todos y un saludo.
__________________
Be water my friend.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema al cargar un fichero xml en un TXMLDocument nelem Internet 3 22-05-2008 15:50:20
Generar fichero x.tlb a partir de x_TLB.pas albion Varios 1 16-06-2006 13:20:51
Generar Fichero de Texto Contaplus muli Varios 4 16-05-2006 21:28:06
Bajar fichero por ftp usando TIDFtp chux Internet 2 16-05-2006 09:16:13
Subir un fichero usando http hogol Internet 1 16-11-2004 21:11:49


La franja horaria es GMT +2. Ahora son las 19:32:00.


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