Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   ¿Existen clases que manejen el parseo de documentos XML? (https://www.clubdelphi.com/foros/showthread.php?t=74661)

noob 02-07-2011 14:15:58

¿Existen clases que manejen el parseo de documentos XML?
 
Hola,

Necesito parsear documentos XML. ¿Existen clases que manejen el parseo de documentos XML?

Saludos.

noob 02-07-2011 16:57:34

He encontrado un componente llamado XML Parser y lo he instalado:

http://www.destructor.de/xmlparser/index.htm

A ver qué tal va.

noob 03-07-2011 21:26:21

Os pongo un ejemplillo:

El el .h declaráis este atributo privado:
Código:

    TXmlParser* XmlParser;
En el .cpp:
Código:

    XmlParser->LoadFromFile("C:\\Archivos de programa\\Borland\\CBuilder6\\Projects\\xmlfiles\\test.xml");
    XmlParser->Normalize = true;
    XmlParser->StartScan();

    while (XmlParser->Scan())
    {
      switch(XmlParser->CurPartType)
      {
      case ptXmlProlog:
        {
        ShowMessage("case ptXmlProlog:");
        }
        break;
      case ptDtdc:
        {
        ShowMessage("case ptDtdc:");
        }
        break;
      case ptStartTag:
        {
        ShowMessage("case ptStartTag: " + XmlParser->CurName);
        }
      case ptEmptyTag  :
        {
        TAttrList* list = XmlParser->CurAttr;
        for (int i(0); i < list->Count; i++)
                ShowMessage("case ptEmptyTag: list->Name(i): " + list->Name(i) + ": " + list->Value(i));
        }
        break;
      case ptEndTag:
        {
        ShowMessage("case ptEndTag: " + XmlParser->CurName);
        }
        break;
      case ptContent:
        {
        ShowMessage("case ptContent: " + XmlParser->CurContent);
        }
        break;
      case ptCData:
        {
        ShowMessage("case ptContent :");
        }
        break;
      case ptComment:
        {
        ShowMessage("case ptComment :");
        }
        break;
      case ptPI:
        {
        ShowMessage("case ptPI :");
        }
        break;
    }
    }

Le podéis pasar este documento XML para probar:

Código:

<?xml encoding="XXX" standalone="yes"?>
        <cuadrado id="cuadradoUNO" lado="5">
                <posicion x="5" y="7" />
        </cuadrado>
        < cuadrado id="cuadradoDOS" lado="19"> <!--Error de escritura-->
                <posicion x="10" y="33" / >
        </cuadrado >
        <circulo id="circuloUNO" radio="2" >
                <posicion x="5" y="7"/>
        </circulo>       
        <cuadrado id= "cuadrado TRES" lado="2"> <!--Se ingresa un error de escritura-->             
                <posicion x="010" y="66" />
        </cuadrado>       
        <rectangulo id="rectanguloUNO" base="5" altura="8">
                <posicion x="5" y=" " /> <!--Se ingresa un caracter vacio-->
        </rectangulo>
        <segmento id="segmentoUNO" >
                <inicio x="50" y="12" /> <!--No se ingresa un subatributo  obligatorio-->
                <fin>esto es el fin</fin>
        </segmento>


Casimiro Notevi 03-07-2011 21:35:21

Gracias por comentarlo :)


La franja horaria es GMT +2. Ahora son las 10:23:25.

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