Hace tiempo que no escribo en el blog pero es que últimamente ando muy muy liado con los diferentes proyectos que estamos desarrollando en Syderis. Hoy os pongo un pequeño ejemplo de como leer y escribir XML con la API de .NET framework y C#.
Dado el xml:
<?xml version="1.0" encoding="utf-8" ?>
<sample>
<equipments>
<equipment type="tipo1">
<point x="1900" y="1000">
<title>Titulo</title>
<image >DSCN2903</image>
<description>Esta es la descripción del primer punto</description>
</point>
<point x="1000" y="2300">
<title>Titulo</title>
<image />DSCN2903
<description>mirador2</description>
</point>
</equipment>
</equipments>
</sample>
Código del lector:
public void Read(string filename)
{
XmlDocument xml = new XmlDocument();
try
{
xml.Load(filename);
XmlNodeList nodeEquipments = xml.GetElementsByTagName("Equipments");
//Equipamientos
XmlNodeList equipmentsNodes = ((XmlElement)nodeEquipments[0]).GetElementsByTagName("equipment");
string sfilename;
string stitle;
string sdescription;
string sx, sy;
foreach (XmlElement equipment in equipmentsNodes)
{
string stype = equipment.GetAttribute("type");
XmlNodeList pointsNodes = equipment.GetElementsByTagName("point");
foreach (XmlElement pointNode in pointsNodes)
{
sx = pointNode.GetAttribute("x");
sy = pointNode.GetAttribute("y");
stitle = pointNode.GetElementsByTagName("title")[0].InnerText;
sfilename = pointNode.GetElementsByTagName("image")[0].InnerText;
sdescription = pointNode.GetElementsByTagName("description")[0].InnerText;
Console.Writeline("type:"+stype+" coord:"+sx+sy+" filename"+sfilename+" title:"stitle+" description:"+sdescription);
}
}
}
catch (XmlException e)
{
Console.WriteLine("XML file load Failure." + e.ToString());
}
}
Código escritor:
public void Write(string filename)
{
XmlTextWriter xmlWriter = new XmlTextWriter(filename, System.Text.Encoding.UTF8);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("Sample");
//Equipments
xmlWriter.WriteStartElement("Equipments");
foreach (string etype in equipments.keys)
{
xmlWriter.WriteStartElement("equipment");
xmlWriter.WriteAttributeString("type", etype);
foreach (Equipment e in equipments[etype])
{
//<point x="100" y="100">
xmlWriter.WriteStartElement("point");
xmlWriter.WriteAttributeString("x", e.Point.X.ToString());
xmlWriter.WriteAttributeString("y", e.Point.Y.ToString());
xmlWriter.WriteStartElement("title");
xmlWriter.WriteString(e.Title);
xmlWriter.WriteEndElement();
//<image />filename
xmlWriter.WriteStartElement("image");
xmlWriter.WriteString(e.Image);
xmlWriter.WriteEndElement();
//<description>mirador</description>
xmlWriter.WriteStartElement("description");
xmlWriter.WriteString(e.Description);
xmlWriter.WriteEndElement();
xmlWriter.WriteEndElement(); // End point
}
xmlWriter.WriteEndElement(); //End equipment
}
xmlWriter.WriteEndElement(); //End Equipments
xmlWriter.WriteEndElement(); //End Sample
xmlWriter.Flush();
xmlWriter.Close();
}
3 comentarios:
Ud es el Unico que tiene el codigo correcto graciaaaaaaaaas estaba cansada de buscar
Karma_green, me alegro que te sirviera y que además hayas dejado un comentario positivo.
Un saludo
puedes ayudarme porque declaras la variable equipments tengo error ah no se como solucinarlo
Publicar un comentario