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>