Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-04-2012
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 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
  #2  
Antiguo 09-04-2012
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

Algo me dice que la parte:

Código:
<!DOCTYPE proyecto [
<!ELEMENT proyecto (trabajador)>
<!ELEMENT trabajador (nombre,empresa,cargo,edad)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT empresa (#PCDATA)>
<!ELEMENT cargo (#PCDATA)>
<!ELEMENT edad (#PCDATA)>
]>
en tu XML es la que te está produciendo el problema. Has una prueba eliminando esa parte del archivo y trata de cargarlo de nuevo en el XMLTransformProvider.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como saber numero de registros de una tabla usando un clientdataset? acl_gandalf Conexión con bases de datos 11 26-06-2023 20:09:19
Error catastrófico con XMLTransformProvider y ClientDataset victortera Providers 3 18-03-2014 17:52:25
Crear tabla temporal usando ClientDataSet oscarac OOP 10 20-05-2011 10:36:24
Persistir XML con XMLTransformProvider bataola Providers 0 26-07-2007 19:44:39
(dbase) al crear indices tira el error: 'table level changed' orfeo Tablas planas 0 11-05-2004 20:00:49


La franja horaria es GMT +2. Ahora son las 23:34:11.


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
Copyright 1996-2007 Club Delphi