![]() |
Cómo puedo leer los datos de este xml!!
Hola a tod@s,
lo primero decir que soy nuevo aquí y he estado buscando por varios sitios pero no he encontrado ninguna posible solución de poder leer este documento xml: <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> <Event> <Pepe Angle="1.5437588697563402" Range="7.200984157558928" altitude="380.892" entityID="2003" event="Position" latitude="36.710891754656565" longitude="67.21611066229325" request="0" timestamp="1229331438562"/> </Event> Lo mas que me he acercado ha sido a que me muestre el nombre, los demas nodos no se cómo tratarlos, he hecho lo siguiente: ShowMessage(XML.DocumentElement.ChildNodes[0].NodeName); Estoy completamente atascado, he probado también ésto: XML.DocumentElement.ChildNodes[0].ChildNodes[1].NodeName pero me da el error de "list index out of bound" Agradezco cualquier tipo de ayuda |
Hola,
Sé bienvenido al ClubDelphi. Me temo que no voy a poder darte una respuesta concreta, sin embargo, tal vez puedas recoger alguna idea de lo siguiente: en realidad lo que estás buscando son "atributos" de un determinado "nodo". Ya estás pudiendo acceder a dicho "nodo", como dices, puedes acceder al nombre de ese "nodo". Pues bien, ese nodo ha de tener "atributos", y estos son en realidad, según se ve, los que contienen los valores que te interesan. Así que no debes buscar "nodos" del "nodo", sino "atributos" del "nodo" en cuestión. Echa un vistazo al resto de propiedades del "nodo", de la misma manera que accedes a su nombre, debes poder acceder a sus "atributos". Lamento no poder decirte otra cosa. :rolleyes: |
Gracias, lo probare y te comento
|
Bueno, conseguir leerlo (y ponerlo en un Grid, por ejemplo) desde Delphi es bastante fácil.
El componente TClientDataset permite leer ficheros XML de disco. * Graba el contenido en un fichero XML que llanmaremos test.XML. * Crea un nuevo proyecto delphi y añade los siguientes componentes: (TDbGrid, TDataSource, TClientDatset y un TXMLTransformProvider -luego veremos para qué...-) ... NOTA: Creo que acabo antes si grabo cómo se hace y lo ves (por eso de más vale 1 imagen que mil palabras) y además creo que va a ser más rápido. ;) Una vez que tengas los componentes en el form y el fichero XML, sigue estos pasos. LINK DEMO (la demo son 3 MG, así que paciencia, tarda un poquito en cargar...) El fichero de transformación deberá sevir para todos los XML que lleguen con esa estructura. Un saludo. |
Hola,
Joroba, se quejará el compañero... con una película con lo que puede hacer y todo... :) ;) |
Lo primero, gracias a ambos por vuestro tiempo y dedicacion.
Neftali, lo que me digiste me ayudó muchisimo, pero ahora me han especificado mejor lo que tengo que hacer y me han pasado el fichero xml completo y tiene unas 700 líneas, o nodos, no estoy muy puesto en ficheros xml, y aparte de eso la carpeta que los contiene tiene también unos 700 xml con la misma estructura. La cuestión es que lo he probado según tu video, y con tantos no funciona, me aparece el error de: "ERROR: Couldn´t create a transformation", después de hacer los siguientes pasos: tools -> xml mapper -> file -> open -> una vez abierto -> bton derecho -> select all -> create datapacket from xml y el recuadro de datapacket me aparece vacio pero pone arriba <Generated>, pulso el boton de 'create and test transformation' y es cuando me aparece el error abajo en la derecha. Si se os ocurre alguna forma de solucionarlo, estoy abierto a cualquier sugerencia, ya que me han puesto un plazo muy corto de tiempo para entregarlo, no obstante seguiré investigando la manera de solucionarlo y si encuentro alguna solución la posteare para futuras dudas. Gracias por vuestro tiempo y un saludo |
Hola bone.
La verdad es que son pocos datos; Si tener el fichero XML es difícil saber porqué puede estar sucediendo el error; Tal vez por el número de nodos, tal vez por la estructura, tal vez por caracteres raros en el contenido. En realidad puede ser cuelquier cosa. :confused::confused: Si tienes posibilidad de subir ese fichero, súbelo y podemos hacer pruebas. La otra opción es "parsear" el fichero de forma manual, para ir extrayendo datos. Eso te representará más trabajo y más posibilidad de errores. Un saludo. |
Gracias Neftali, pero mas o menos he conseguido obtener los datos de todos los nodos, es una forma un poco rudimentaria pero funciona, ya que me corre prisa y es una aplicación interna, lo que he hecho es lo siguiente:
un bucle que me recorra todos los nodos y para que me muestre el contenido de los atributos: XMLDocument.DocumentElement.ChildNodes[i].Attributes['nombreAtributo'] No obstante cuando tenga más tiempo seguiré investigando la forma de obtener los atributos automáticamente. Siento no poder mandarte el fichero pero son unos datos confidenciales, ya me entiendes, por seguridad. Gracias por tu ayuda y si descubro algo nuevo lo postearé. Salu2 |
Cita:
Un saludo. |
Para trabajar con XML desde Delphi
te aconsejo que mires este tremendo libro de trucos , en la pagina 211 hacia adelante se habla del tema, pues Delphi ya tiene componentes para esto. Te aconsejo que lo leas completo pues es una mina para aquellos que quieren aprender.;) |
Buena recopilación.
Gracias. |
el link me aparece como roto me podrias pasar de nuevo el link gracias muy buen aporte neftali
el del demo |
Busqueda Incremental En Delphi Con Lectura De Archivo Xml
Video que muestra como cargar archivos XML mediante un ClientDataSet para hacer búsquedas incrementales.... puede serles de utilidad; en Dailymotion. No puedo colocarles en enlace, por reglas del foro.
Saludos, Javier.- |
Cita:
Intenta colocar el enlace utilizando alg así: h_t_t_p_:_//enlace_correcto |
Sobre La Busqueda Incremental En Delphi Con Lectura De Archivo Xml
Espero que lo vean como un aporte y no me baneen por incumplir las reglas del foro ...
ya que no se me permite, colocar enlaces como el colega me explica: simplemente van a dailymotion (el sitio de la red de videos en donde mejor se ve el video) y colocan en buscar "BUSQUEDA INCREMENTAL EN DELPHI - VIDEO 01" Es una secuencia de tres videos, donde se explica como realizar búsquedas incrementales en Delphi con el mínimo de código y leyendo uno de los archivos XML que vienen con la versión 7. Saludos, colegas. Javier.- |
He aquí los videos en cuestión:
busqueda-incremental-en-delphi-video-01 busqueda-incremental-en-delphi-video-02 busqueda-incremental-en-delphi-video-03 |
Saludos, colega Neftali ...
En efecto ... el colega acaba de colocar los enlaces respectivos que no pude colocar, por ser nuevo usuario.
Saludos, estimado Neftalí. Espero los videos sean de utilidad. Cordial abrazo a la comunidad. Javier.- |
La franja horaria es GMT +2. Ahora son las 09:43:48. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi