none
Parser XML RRS feed

  • Pregunta

  • Como puedo acceder a los datos de las etiquetas ruta en el siguiente XML?

    <?xml version="1.0" encoding="utf-8" ?>
    <Estaciones>
      <Estacion>
        <id>1</id>
        <nombre>Metro Universidad</nombre>
        <latitud>19.32365</latitud>
        <longitud>-99.174904</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>2</ruta>
          <ruta>3</ruta>
          <ruta>4</ruta>
          <ruta>5</ruta>
        </rutas>
        <color></color>
      </Estacion>
      <Estacion>
        <id>2</id>
        <nombre>CENDI</nombre>
        <latitud>19.328497</latitud>
        <longitud>-99.174987</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>5</ruta>
        </rutas>
        <color></color>
      </Estacion>
      <Estacion>
        <id>3</id>
        <nombre>Psiquiatría</nombre>
        <latitud>19.332367</latitud>
        <longitud>-99.178453</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>5</ruta>
        </rutas>
        <color></color>
      </Estacion>
      <Estacion>
        <id>4</id>
        <nombre>Química</nombre>
        <latitud>19.330846</latitud>
        <longitud>-99.180577</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>7</ruta>
        </rutas>
        <color></color>
      </Estacion>
      <Estacion>
        <id>5</id>
        <nombre>CELE</nombre>
        <latitud>19.330754</latitud>
        <longitud>-99.183274</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>7</ruta>
        </rutas>
        <color></color>
      </Estacion>
      <Estacion>
        <id>6</id>
        <nombre>Ingeniería</nombre>
        <latitud>19.33072</latitud>
        <longitud>-99.184547</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>7</ruta>
        </rutas>
        <color></color>
      </Estacion>
      <Estacion>
        <id>7</id>
        <nombre>Arquitectura</nombre>
        <latitud>19.330545</latitud>
        <longitud>-99.18666</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>7</ruta>
        </rutas>
        <color></color>
      </Estacion>
      <Estacion>
        <id>8</id>
        <nombre>Rectoría</nombre>
        <latitud>19.332536</latitud>
        <longitud>-99.189444</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>9</ruta>
        </rutas>
        <color></color>
      </Estacion>
      <Estacion>
        <id>9</id>
        <nombre>Psicología</nombre>
        <latitud>19.334513</latitud>
        <longitud>-99.189291</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>5</ruta>
          <ruta>7</ruta>
          <ruta>9</ruta>
        </rutas>
        <color></color>
      </Estacion>
      <Estacion>
        <id>10</id>
        <nombre>Filosofía y Letras</nombre>
        <latitud>19.334733</latitud>
        <longitud>-99.187617</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>5</ruta>
          <ruta>7</ruta>
          <ruta>9</ruta>
        </rutas>
        <color></color>
      </Estacion>
      <Estacion>
        <id>11</id>
        <nombre>Derecho</nombre>
        <latitud>19.335042</latitud>
        <longitud>-99.184981</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>5</ruta>
          <ruta>7</ruta>
          <ruta>9</ruta>
        </rutas>
        <color></color>
      </Estacion>
      <Estacion>
        <id>12</id>
        <nombre>Economía</nombre>
        <latitud>19.335288</latitud>
        <longitud>-99.182891</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>5</ruta>
          <ruta>7</ruta>
          <ruta>9</ruta>
        </rutas>
        <color></color>
      </Estacion>
      <Estacion>
        <id>13</id>
        <nombre>Odontología</nombre>
        <latitud>19.334743</latitud>
        <longitud>-99.180738</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>5</ruta>
          <ruta>7</ruta>
          <ruta>9</ruta>
        </rutas>
        <color></color>
      </Estacion>
      <Estacion>
        <id>14</id>
        <nombre>Medicina</nombre>
        <latitud>19.333038</latitud>
        <longitud>-99.17871</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>5</ruta>
          <ruta>7</ruta>
          <ruta>9</ruta>
        </rutas>
        <color></color>
      </Estacion>
      <Estacion>
        <id>15</id>
        <nombre>Veterinaría</nombre>
        <latitud>19.329664</latitud>
        <longitud>-99.176049</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>5</ruta>
        </rutas>
        <color></color>
      </Estacion>


    luismetmx

    lunes, 8 de abril de 2013 19:48

Respuestas

  • Pero ademas necesito usar los demás datos también en un solo objeto debe ser un solo objeto con toda esa informacion


    No se si entiendo tu pregunta, pero tienes todo en el objeto doc:

    string myxml = "Tu XML aquí";
    XDocument doc = XDocument.Parse(myxml);

    Puedes utilizar sus propiedades para acceder a los distintos elementos del XML.

    Si esto no responde a tu pregunta, intenta concretar un poco más qué es lo que necesitas.

    martes, 9 de abril de 2013 21:47

Todas las respuestas

  • string myxml = "Tu XML aquí";
    XDocument doc = XDocument.Parse(myxml);
    var rutas = doc.Descendants("ruta");

    martes, 9 de abril de 2013 9:40
  • Pero ademas necesito usar los demás datos también en un solo objeto debe ser un solo objeto con toda esa informacion

    luismetmx

    martes, 9 de abril de 2013 21:13
  • Pero ademas necesito usar los demás datos también en un solo objeto debe ser un solo objeto con toda esa informacion


    No se si entiendo tu pregunta, pero tienes todo en el objeto doc:

    string myxml = "Tu XML aquí";
    XDocument doc = XDocument.Parse(myxml);

    Puedes utilizar sus propiedades para acceder a los distintos elementos del XML.

    Si esto no responde a tu pregunta, intenta concretar un poco más qué es lo que necesitas.

    martes, 9 de abril de 2013 21:47
  • Necesito poner los datos como un item de una lista incluyendo cada ruta cada nodo estación del XML representa un Item de la lista eso es lo que necesito hacer

    Estacion>
        <id>12</id>
        <nombre>Economía</nombre>
        <latitud>19.335288</latitud>
        <longitud>-99.182891</longitud>
        <rutas>
          <ruta>1</ruta>
          <ruta>5</ruta>
          <ruta>7</ruta>
          <ruta>9</ruta>
        </rutas>
        <color></color>
      </Estacion>


    luismetmx

    miércoles, 10 de abril de 2013 15:03
  • Entiendo que lo que necesitas es una lista de estaciones. Para eso tendrías que deserializar el fichero XML en un objeto. Para eso tendrás que crear las clases que definen tu objeto.

    Puedes hacerlo de la siguiente manera:

        [System.Xml.Serialization.XmlRoot("Estaciones")]
        public class Estaciones
        {
            
            [XmlArrayItem("Estacion", typeof(Estacion))]
            public Estacion[] Estacion { get; set; }
        }
    
        public class Estacion
        {
            [System.Xml.Serialization.XmlElement("id")]
            public int Id { get; set; }
    
            [System.Xml.Serialization.XmlElement("nombre")]
            public string Nombre { get; set; }
    
            [System.Xml.Serialization.XmlElement("latitud")]
            public double Latitud { get; set; }
    
            [System.Xml.Serialization.XmlElement("longitud")]
            public double Longitud { get; set; }
    
            [XmlArray("rutas")]
            [XmlArrayItem("ruta", typeof(Ruta))]
            public Ruta[] ruta { get; set; }
    
            [System.Xml.Serialization.XmlElement("color")]
            public string Color { get; set; }
        }
    
        public class Ruta
        {
            [System.Xml.Serialization.XmlElement("ruta")]
            public int Ruta { get; set; }
        }

    Después tendrías que deserializar el XML a un objeto cuando lo necesites:

                Estaciones estaciones = new Estaciones();
                XmlSerializer serializer = new XmlSerializer(typeof(Estaciones));
                StreamReader reader = new StreamReader(path_al_fichero);
                estaciones = (Estaciones)serializer.Deserialize(reader);
                reader.Close();

    Advertencia: No he probado si funciona el código mostrado, puede que necesite algún cambio. Pero debería servirte como guía.

    Un saludo

    miércoles, 10 de abril de 2013 15:57