Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Leer Xml (https://www.clubdelphi.com/foros/showthread.php?t=53083)

chrids506 09-02-2008 20:11:12

Leer Xml
 
Disculpen, mi pregunta va enfocada a ficheros XML, existe alguna función para leerlos? o cual es la forma mas facil? porque podría leerlo caracter por caracter pero me imagino que habrán mejores formas, gracias

dec 09-02-2008 20:19:59

Hola,

Existen componentes de terceros, y, a partir de cierta versión de Delphi (creo que la 6, la 7 seguro) se incluye el componente "TXmlDocument", que, junto con algunas interfaces (como "IXMLNode") te permiten trabajar con archivos XML.

El componente "TXmlDocument" si no recuerdo mal está en la pestaña "Internet" de la paleta de componentes. En todo caso puedes usarlo "a mano", si no me equivoco se implementa en la unidad "XMLDoc", pero hay otras implicadas, como "XmlIntf".

Si buscas por los foros encontrarás más información sobre "TXmlDocument".

poliburro 09-02-2008 20:47:54

Cita:

Empezado por dec (Mensaje 264685)
Hola,

Existen componentes de terceros, y, a partir de cierta versión de Delphi (creo que la 6, la 7 seguro) se incluye el componente "TXmlDocument", que, junto con algunas interfaces (como "IXMLNode") te permiten trabajar con archivos XML.

El componente "TXmlDocument" si no recuerdo mal está en la pestaña "Internet" de la paleta de componentes. En todo caso puedes usarlo "a mano", si no me equivoco se implementa en la unidad "XMLDoc", pero hay otras implicadas, como "XmlIntf".

Si buscas por los foros encontrarás más información sobre "TXmlDocument".

Efectivamente con delphi 7 puedes manipular Xml, la bronca es que con documentos muy pesados, la lectura es lenta.

chrids506 09-02-2008 23:17:18

Gracias, lo he resuelto con esto:

Código Delphi [-]
var
  nodoClave,
  nodoSeccion: IXMLNode;
begin
   XMLDocument1.FileName := ExtractFilePath(ParamStr(0)) + '\fincas\'+ENomb.Text+'.xml';
   XMLDocument1.Active := true;
   XMLDocument1.Version := '1.0';
   with XMLDocument1.DocumentElement do
   begin
      nodoSeccion := ChildNodes.FindNode('datos');
      with nodoSeccion do
      begin
         nodoClave := ChildNodes.FindNode('ubi');
         EUbi.Text := nodoClave.Text;
         nodoClave := ChildNodes.FindNode('tam');
         ETam.Text := nodoClave.Text;
         nodoClave := ChildNodes.FindNode('otros');
         MOtros.Lines.Text := nodoClave.Text;
         nodoClave := ChildNodes.FindNode('precio');
         EPrecio.Text := nodoClave.Text;
      end;
   end;
end;

Probablemente no es la mejor manera, pero trabaja bien, gracias!

emeritos 31-03-2008 12:55:14

Hola, Con el codigo Delphi de chrids506 tambien me devuelto el contenido pero solo el primero, como puedo seguir leyendo las etiquetas sucesivas para que me devuelta las siguientes.

Pongo un ejemplo por si no me he explicado

<profesor>
<dni>99999</dni>
<nombre>aaaaaa</nombre>
</profesor>
<profesor>
<dni>88888</dni>
<nombre>bbbbbb</nombre>
</profesor>
.
.
.
.
Solo me devuelve el dni = 99999 y el nombre = aaaaa el siguiente y los sucesivos no.

Gracias


La franja horaria es GMT +2. Ahora son las 09:07:05.

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