Leer atributos de un xml

28/02/2009 - 01:00 por mtaboada | Informe spam
Buenas tardes foro, tengo una duda referente al manejo xml la verdad
me quedo muy confuso muchas cosas porque segun lo que lei hay muchas
formas de hacer algo.
Tengo un archivo xml
<?xml version="1.0" encoding="utf-8"?>
<Page height="4200" width="2560">
<Rect value="1">
<point1 x="1224" y="1106" />
<point2 x="1224" y="1147" />
<point3 x="1504" y="1147" />
</Rect>
<Rect value="2">
<point1 x="1124" y="1071" />
<point2 x="1124" y="1119" />
<point3 x="1508" y="1119" />
</Rect>
</Page>
lo que necesito es recuperar el valor de page height="4200" y
width="2560 en algun lugar
y despues recuperar los valores de poin1, poin2 y ponit3 tantas veces
como Rect se haya creado, hay alguna clase especifica para ahcer ese
trabajo ? ..podrian guiarme por favor mas o menos como seria?, gracias
de antemano...
 

Leer las respuestas

#1 Alberto Poblacion
28/02/2009 - 11:39 | Informe spam
"mtaboada" wrote in message
news:
Buenas tardes foro, tengo una duda referente al manejo xml la verdad
me quedo muy confuso muchas cosas porque segun lo que lei hay muchas
formas de hacer algo.
Tengo un archivo xml
<?xml version="1.0" encoding="utf-8"?>
<Page height="4200" width="2560">
<Rect value="1">
<point1 x="1224" y="1106" />
<point2 x="1224" y="1147" />
<point3 x="1504" y="1147" />
</Rect>
<Rect value="2">
<point1 x="1124" y="1071" />
<point2 x="1124" y="1119" />
<point3 x="1508" y="1119" />
</Rect>
</Page>
lo que necesito es recuperar el valor de page height="4200" y
width="2560 en algun lugar
y despues recuperar los valores de poin1, poin2 y ponit3 tantas veces
como Rect se haya creado, hay alguna clase especifica para ahcer ese
trabajo ?



Hay varias clases que permiten hacerlo. Podrías usar un XmlReader e ir
analizando cada nodo del Xml según se lee. O podrías usar el XmlSerializer
para deserializar tu Xml en una Clase que contenga los datos deseados. O
leerlo com el ReadXml() de un DataSet y recibir los datos en tablas dentro
del DataSet. O cargarlo todo en un XmlDocument, y usar XPath para sacar los
datos:

XmlDocument doc = new XmlDocument();
doc.Load("fichero.xml");
XmlNode nodoPage = doc.SelectSingleNode("//Page");
string height = nodoPage.Attributes["height"].Value;
string width= nodoPage.Attributes["width"].Value;
XmlNodeCollection nodosRect = doc.SelectNodes("//Rect");
foreach (XmlNode xn in nodosRect)
{
XmlNode point1 = xn.SelectSingleNode("point1");
string x = point1.Attributes["x"].Value;
//etc.
}

Nota: he tecleado el código anterior de memoria, sin probarlo, por lo
que no será de extrañar que contenga algún error, pero te sirve para hacerte
la idea de cómo funciona el XmlDocument.

Preguntas similares