• Domingo 28 de Abril de 2024, 18:13

Autor Tema:  Sobre Xmldocument  (Leído 2673 veces)

lordford

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Sobre Xmldocument
« en: Miércoles 12 de Octubre de 2005, 06:08 »
0
Hola:

alguno sabe como funciona este componente, he leido mucho sobre el, pero nada practico, mucha teoria, alguien puede adelantarme algo ??

Salu2,
~ Si quieres que algo en la vida te salga bien]~

dodongoxp

  • Visitante
Re: Sobre Xmldocument
« Respuesta #1 en: Sábado 15 de Octubre de 2005, 12:05 »
0
hola.. yo soy novato en este tema del c++ pero actualmente estoy usando el xmldocument para un proyecto que estoy desarrollando y su uso es realmente facil..


la cosa consiste solamente en poner el componente en una forma
y especificar que archivo quieres que abra.... o tambien puedes hacerlo desde la funcion LoadFromFile..

ya que cargues un documento en el... te pondra en memoria el documento en forma de arbol ...


y tu accedes a los nodos por medio de interfaces

por ejemplo para acceder al nodo principal seria


_di_IXMLNode nodoraiz = XMLDocument1->DocumentElement;


de esa manera cargarias la informacion del nodo principal en nodoraiz.. como por ejemplo su nombre, sus atributos.. y si tiene child nodes.. para obtener una lista de los child nodes del nodo principal tendrias que hacer un IXMLNodeList de esta manera


_di_IXMLNodeList nodolista = XMLDocument1->ChildNodes;


hay esta cargando la info de los child nodes  de el nodo principal .. y tienes acceso a funciones para saber cuantos nodos son, encontrar nodos para asignarlos a un IXMLNode y manipularlo independientemente

de esa manera solo podrias acceder a los nodos del primer nivel ... para ingresar a niveles mas internos ... ( child de child ) seria de esta forma


_di_IXMLNode nodoraiz = XMLDocument1->DocumentElement;

_di_IXMLNode nodointerno = nodoraiz->ChildNodes->Get(2);

ShowMessage(nodointerno->Name);


en ese codigo estariamos obteniendo en un mensaje  el nombre del tercer child node del nodo principal


tambien se puede obtener de una manera directa si es necesario


_di_IXMLNode mododirecto =  XMLDocument1->DocumentElement->ChildNodes->Get(2);

ShowMessage(mododirecto->Name);

para agregar o remover nodos es solo acudir a las funciones dentro de childnodes o de un IXMLNodeList


el componente tiene herramientas utiles para acceder a los documentos xml de una manera totalmente dinamica y agradable.. solo que como en todo hay que tener imaginacion de como usar las funciones  para alcanzar las metas deseadas


para un excelente metodo de visualizacion grafica de un documento xml.. no hay mejor que cargarlo en un TTreeView a travez de una funcion recursiva.. que vaya abriendo nodo por nodo e irlo agregando al treeview de la manera correcta... luego podras disponer de los datos de una manera mas visual .. si encuentras la manera de relacionar los nodos del TTreeview con los del TXMLDocument


por el momento esto solo es una rapida mencion sobre el componente.... para obtener informacion mas detallada del componente y de sus interfaces,funciones y propiedades... consulta la documentacion del C++ Builder 6 Enterprise (no se si TXMLDocument venga incluido en la version pro )


menu de inicio -> programas -> c++ builder 6-> help -> using c++ builder

toda la informacion la he sacado de sus archivos de ayuda :whistling:

si deseas buscar algo especifico en index escribe lo que te interese saber y de seguro lo encontraras  :kicking:


« última modificación: Jueves 23 de Agosto de 2012, 07:40 por dodongoxp »

lordford

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Re: Sobre Xmldocument
« Respuesta #2 en: Martes 18 de Octubre de 2005, 03:05 »
0
Hola dodongoxp:

muchas gracias por tu mensaje, ya he comprendido casi todo y tengo lo que me pides, lo he cargado en un TTreeView y ha he programado que cada nodo hoja sea editable, ahora intentare programar que los atributos sean editables tambien, implemente una funcion para el dibujado de los nodos, la funcion es la sgte:

Código: Text
  1. void Tf_main::DrawNodes(TTreeView *_treeView,
  2.                        TTreeNode* _parentTreeNode,
  3.                        IXMLNode *_actualXMLNode)
  4. {
  5.   TTreeNode *newNode = _treeView->Items->AddChild(_parentTreeNode, _actualXMLNode->NodeName);
  6.  
  7.   newNode->Data = _actualXMLNode;
  8.  
  9.   // Si no es una hoja
  10.   if(!_actualXMLNode->IsTextElement)
  11.   {
  12.     for(int i = 0; i < _actualXMLNode->ChildNodes->Count; i++)
  13.       DrawNodes(_treeView, newNode, _actualXMLNode->ChildNodes->Get(i));
  14.   }
  15.   else
  16.   {
  17.     newNode->Text += ((AnsiString)(" = " + ((IXMLNode *)newNode->Data)->NodeValue));
  18.   }
  19. }
  20.  

La llamada inicial la hago asi:

   
Código: Text
  1. TTreeNode *root = new TTreeNode(tv_NodesView->Items);
  2.     DrawNodes(tv_NodesView, root, XMLD1->DocumentElement);
  3.  


Espero lo entiendas, y si logras algo util me lo comentes.

Gracias nuevamente.
~ Si quieres que algo en la vida te salga bien]~

mumo

  • Miembro activo
  • **
  • Mensajes: 66
    • Ver Perfil
Re: Sobre Xmldocument
« Respuesta #3 en: Miércoles 19 de Octubre de 2005, 00:22 »
0
hola.
una pequeña curiosidad, puedes colocar una imagen para ver el resultado del codigo.

por fa..

no he trabajado con el objeto xmldocument, y quiero ver cual es su gracia, si vale la pena o no trabajar con el.

gracias.

lordford

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Re: Sobre Xmldocument
« Respuesta #4 en: Viernes 21 de Octubre de 2005, 17:57 »
0
Pues aqui tienes solo una imagen, no es mucho, realmente estaba aprendiendo a manejar estos componentes...

Cualquier pregunta pues solo hazla sin miedos..

LordFord  :comp:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
~ Si quieres que algo en la vida te salga bien]~