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...

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 mtaboada
28/02/2009 - 13:28 | Informe spam
On 1 mar, 05:39, "Alberto Poblacion" <earthling-
wrote:
"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.



Muchas gracias me sirve mucho tu ejemplo, y ya tengo por donde
empezar..
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida