You are on page 1of 4

<contact>

<name>John Doe</name>
<email>j@doe.com</email>
<phone>555 12345</phone>
</contact>

auto_ptr<Contact> c = contact ("c.xml");


cout << c->name () << ", "
<< c->email () << ", "
<< c->phone () << endl;

// SAX

class ContactParser: ...


{
virtual void
endElement (const string& name)
{
if (name == "name")
cout << ", "
else if (name == "email")
cout << ", "
else if (name == "phone")
cout << endl;
}

virtual void
characters (const string& s)
{
cout << s;
}
};

// XML Binding: C++/Parser

class ContactParser: ...


{
virtual void
name (const string& n)
{
cout << n << ", ";
}

virtual void
email (const string& e)
{
cout << e << ", ";
}

virtual void
phone (const string& p)
{
cout << p << endl;
}
};

// DOM

DOMElement* c = ...
DOMNodeList* l;

l = c->getElementsByTagName ("name");
DOMNode* name = l->item (0);

l = c->getElementsByTagName ("email");
DOMNode* email = l->item (0);

l = c->getElementsByTagName ("phone");
DOMNode* phone = l->item (0);

cout << name->getTextContent () << ", "


<< email->getTextContent () << ", "
<< phone->getTextContent () << endl;

// XML Binding: C++/Tree

Contact c = ...

cout << c.name () << ", "


<< c.email () << ", "
<< c.phone () << endl;
Que es un archivo XML

Es un lenguaje de marcas utilizado para organizar los datos de forma estructurada y


comprensible, tanto para la persona como para los programas informáticos, que permite
entre otras muchas cosas, que diferentes sistemas se comuniquen mandándose la
información en formato XML.

Un archivo XML se compone de etiquetas que a su vez pueden contener mas etiquetas o
valores:

<?xml version="1.0" encoding="UTF-8" ?>


<persona>
<nombre>Pablo</nombre>
<edad>34</edad>
</persona>

Además, las etiquetas también pueden tener atributos, que otorgan mayor información a la
etiqueta que los contiene, en el ejemplo sería “edad”:
<?xml version="1.0" encoding="UTF-8" ?>
<personas>
<nombre edad="34">Pablo</nombre>
<nombre edad="35">Sara</nombre>
<nombre edad="45">Fulanito</nombre>
</personas>

Leer XML con C#


Para poder acceder a los datos xml mediante .NET empezamos agregando la referencia a
System.Xml e importandola después mediante código:

Usando de ejemplo el xml anterior, para leer sus atributos y etiquetas podriamos usar:

using System.Xml
XmlDocument xDoc = new XmlDocument();
xDoc.Load("c:/personas.xml");

XmlNodeList xPersonas =
xDoc.GetElementsByTagName("personas");
XmlNodeList xLista =
((XmlElement)xPersonas[0]).GetElementsByTagName("nombre");

foreach (XmlElement nodo in xLista)


{
string xEdad = nodo.GetAttribute("edad");
string xNombre = nodo.InnerText;

Con GetElementsByTagName vamos accediendo a las etiquetas y creando


variables que contengan la colección en cuestion, para finalmente acceder
a sus atributos con GetAttribute o al valor de la etiqueta con InnerText.

En el código anterior, por supuesto sería conveniente usar control de


excepciones Try/Catch y comprobar previamente que el fichero xml a leer
existe:
using System.IO;

if (File.Exists("c:/personas.xml"))
{
...
}

You might also like