Ejemplo XML SDF

También podría gustarte

Está en la página 1de 5

Lectura de documento XML

En el siguiente ejercicio vamos a desplegar los valores de un XML


ramificados en un control TreeView.

Creamos un nuevo proyecto de Windows Forms y agregamos un botn y un control


OpenFileDialog, asigne los nombres: btnAbrirXML y openFileXML

Creamos un user control para insertar el TreeView y poder reutilizar el cdigo:

Lo nombramos: uControlArbolXML.cs
Nos queda...

En el user control agregamos un ListBox y TreeView con los nombres: lBoxXML, treeViewXML.

En el cdigo del user control escribimos:


using
using
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.ComponentModel;
System.Drawing;
System.Data;
System.Linq;
System.Text;
System.Windows.Forms;
System.Xml; //permite utilizar XML

namespace LeerXML
{
public partial class UControlaArbolXML : UserControl
{
public UControlaArbolXML()
{
InitializeComponent();
}

//mtodo pblico para recibir la ruta del archivo


public void abreXML(string ruta)
{
XmlDocument docXML = new XmlDocument(); //crea objeto XML
docXML.Load(ruta); //asigna la ruta de archivo
XmlElement elemento = docXML.DocumentElement;
lBoxXML.Items.Add("el primer elemento es: " +
elemento.Name.ToString());
lBoxXML.Items.Add( "tiene " +
elemento.ChildNodes.Count.ToString() + " hijos");
XmlNodeList nodosHijos = docXML.ChildNodes;
//ahora elige la 2da rama
XmlNodeList nHijos = nodosHijos[1].ChildNodes;
//ahora exploramos solo los nodos hijos de la raz
foreach (XmlNode nodo in nHijos)
{
lBoxXML.Items.Add("El hijo " + nodo.Name.ToString() +
" tiene " + nodo.ChildNodes.Count.ToString() + " descendientes");
}
treeViewXML.Nodes.Clear();
treeViewXML.Nodes.Add(new TreeNode(docXML.DocumentElement.Name));
TreeNode nodos = new TreeNode();
nodos = treeViewXML.Nodes[0];
//invoca mtodo recursivo para llenar el rbol
agregaNodo(docXML.DocumentElement, nodos);
treeViewXML.ExpandAll();
}

//mtodo privado para llenar rbol con recursividad


private void agregaNodo(XmlNode nodo, TreeNode arbolNodo)
{
XmlNode xNode; //nodo XML
TreeNode tNode; //nodo del treeview
XmlNodeList nodeList;
int i;
//hace un ciclo recursivo si va encontrando mas nodos internos
if (nodo.HasChildNodes)
{
nodeList = nodo.ChildNodes;
for (i = 0; i <= nodeList.Count - 1; i++)
{
xNode = nodo.ChildNodes[i];
arbolNodo.Nodes.Add(new TreeNode(xNode.Name));
tNode = arbolNodo.Nodes[i];
agregaNodo(xNode, tNode);
}
}
else //para cortar la recursividad elimina lo innecesario
{
//nos permite extraer los datos basados en el tipo de nodo
arbolNodo.Text = (nodo.OuterXml).Trim();
}
}
}
}

En el cdigo del formulario:


private void btnAbrirXML_Click(object sender, EventArgs e)
{
openFileXML.DefaultExt = "xml";
openFileXML.Filter = "xml files (*.xml)|*.xml";
openFileXML.ShowDialog();
string ruta = openFileXML.FileName;
try //operacin de riesgo
{
UControlaArbolXML arbolXML = new UControlaArbolXML();
arbolXML.abreXML(ruta);
//incorporamos el user control al formulario
this.Controls.Add(arbolXML);
arbolXML.Left = 10;
arbolXML.Top = 70;
}
catch (Exception ee) //obtenemos cualquier mensaje de error
{ MessageBox.Show(ee.Message.ToString());
}
}

Al ejecutar despliega la estructura del XML en el


rbol y algunas propiedades de la raz.

También podría gustarte