PDA

Ver la Versión Completa : ¿Existen clases que manejen el parseo de documentos XML?


noob
02-07-2011, 14:15:58
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:

TXmlParser* XmlParser;


En el .cpp:

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:


<?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 :)