Ver Mensaje Individual
  #1  
Antiguo 05-04-2012
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Reputación: 16
lmpadron Va por buen camino
Error usando ClientDataSet y XMLTransformProvider - ...must have a top level element

Saludos

Tengo un pequeño proyecto donde necesito poder manejar la información almacenada en un XML, escribi un sencillo código para ello usando el XMLDocument y funcionó perfecto, pero sucede que tengo que manejar la inserción y modificación de la información del XML. Por esa razón decidi buscar otro componente que también me permitiera manejar el XML y que de paso manejara la inserción y modificación por mi. Para ello me encontré a ClientDataSet quien necesita un XMLTransformProvider y de paso puedo asignarle al DataSource un DBNavigator. Hasta ahi todo esta bien, cargo el XML en el XMLTransformProvider los problemas comienzan cuando activo el ClientDataSet, este siempre me devuelve el siguiente error

Código:
---------------------------
Error
---------------------------
XML Parse Error:

Reason: XML document must have a top level element.
---------------------------
OK   
---------------------------
Sin embargo el código escrito para el uso del XMLDocument levanta el XML sin problemas, les dejo el XML y el código escrito para el XMLDocument a ver si me pueden ayudar a deshacerme del "document must have a top level element" que me tiene como loco

XML
Código:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE proyecto [
<!ELEMENT proyecto (trabajador)>
<!ELEMENT trabajador (nombre,empresa,cargo,edad)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT empresa (#PCDATA)>
<!ELEMENT cargo (#PCDATA)>
<!ELEMENT edad (#PCDATA)>
]>

<proyecto>
	<trabajador exchange ="1">
		<nombre>Luis M</nombre>
		<empresa>ESPECH</empresa>
		<cargo>Programador Frustrado</cargo>
		<edad>26</edad>
	</trabajador>
	<trabajador exchange ="2">
		<nombre>Wilber</nombre>
		<empresa>ESPCH</empresa>
		<cargo>jefe de asuntos sin importacia</cargo>
		<edad>28</edad>
	</trabajador>
	<trabajador exchange ="3">
		<nombre>Paul</nombre>
		<empresa>ESPCH</empresa>
		<cargo>Secretario del de arriba</cargo>
		<edad>27</edad>
	</trabajador>
</proyecto>


Código usado para el manejo del XML desde el XMLDocument
Código:
       OpenDialog1->Filter = "Lenguaje de Marca Extensible (*.xml)|*.XML";
        if (OpenDialog1->Execute())
        {
           if (OpenDialog1->FileName != "")
           {
                if (StringGrid1->RowCount != 0)
                {
                        for (int a = 0; a < StringGrid1->RowCount + 1; a++)
                        {
                                StringGrid1->Rows[a]->Clear();
                        }
                }

                XMLDocument1->FileName = OpenDialog1->FileName;
                XMLDocument1->Active = true;

                int j = 0;
                _di_IXMLNode Main_Node = XMLDocument1->DocumentElement->ChildNodes->GetNode(j);

                StringGrid1->ColCount = Main_Node->ChildNodes->Count;
                StringGrid1->RowCount = XMLDocument1->DocumentElement->ChildNodes->GetCount() + 1;

                for (int k = 0; k < Main_Node->ChildNodes->Count; k++)
                {
                        StringGrid1->Rows[k,0]->Add(Main_Node->ChildNodes->Nodes[k]->NodeName);
                }

                while (j < XMLDocument1->DocumentElement->ChildNodes->GetCount())
                {
                        Main_Node = XMLDocument1->DocumentElement->ChildNodes->GetNode(j);

                        for (int i = 0; i < Main_Node->ChildNodes->Count; i++)
                        {
                                        StringGrid1->Rows[i + 1,j + 1]->Add(Main_Node->ChildNodes->Nodes[i]->NodeValue);
                        }
                j++;
                }
           }
        }
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita