Programacion UTN-FRA
Septiembre 08, 2010, 06:33:42 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
   Inicio   Ayuda Ingresar Registrarse  
Páginas: [1]
  Agregar a favoritos  |  Imprimir  
Autor Tema: [AYUDA]: XML - Como obtener atributos de elementos irregulares  (Leído 366 veces)
0 Usuarios y 1 Visitante están viendo este tema.
JoEx
Trainee
*
Mensajes: 4



« : Marzo 05, 2010, 01:59:40 pm »

Buenas

Esto me esta quemando la cabeza. No logro obtener los atributos de elementos que no todos los tienen.
Ejemplo:
Código
Lenguaje: xml
<list>
 <item id="1" color="blanco"/>
 <item id="2"/>
</list>
La aplicacion buscará los atributos id y color, en el primer elemento no habrá problemas pero al intentar obtener el atributo color del segundo elemento no lo encontrara y tirará un error en tiempo de ejecución.

El codigo que uso es el siguiente:
Código
Lenguaje: csharp
XDocument _doc = XDocument.Load(this._pathFile);
IEnumerable<Item> query = from c in this._doc.Descendants("item")
                          select new Item
                          {
                              Id = int.Parse(c.Attribute("id").Value),
                              Color = c.Attribute("color").Value
                          };
La clase Item:
Código
Lenguaje: csharp
class Item
{
   public int id { get; set; }
   public string color { get; set; }
}

Lo hice con Linq to Xml pero si a alguno se le ocurre una solución que no sea con esto, igual sirve Wink
Gracias de antemano
En línea
pepinho
Junior
*
Mensajes: 291


Master Of Puppets


« Respuesta #1 : Marzo 05, 2010, 07:33:34 pm »

Probaste con la clase XmlTextReader?, te va a hacer doler más la cabeza y seguramente los hue , pero capaz te saque del apuro  Tongue
En línea

"Si tú tienes una manzana y yo tengo una manzana y las intercambiamos, entonces ambos aún tendremos una manzana. Pero si tú tienes una idea y yo tengo una idea y las intercambiamos, entonces ambos tendremos dos ideas."
— George Bernard Shaw
Severino
Moderador Global
*****
Mensajes: 2.998



« Respuesta #2 : Marzo 05, 2010, 09:31:08 pm »

Podes tratar de parsear el error preguntando si el objeto es null (es el equivalente al nothing de vb, no?).
Es decir, los elementos que sabes que estan siempre los usas de una, y los que tenes dudas preguntas si no es nulo el valor antes de asignarlo. Me explico?
Saluidos.
En línea

Solo los usuarios registrados pueden ver links.
Resgistrate o Inicia sesion
JoEx
Trainee
*
Mensajes: 4



« Respuesta #3 : Marzo 05, 2010, 11:44:16 pm »

pepinho: No probe con xmltextReader =s
severino: Si eso intente pero asi como esta planteado no sabria en donde meter la pregunta, ya que en la consulta no se puede meter ningun if para esto o try, en la query hay que indicarle de una que vas a tomar. Igualmente ya lo solucione Cheesy

Entendí que por consulta no se puede hacer mucho en este caso, ya que no encontre nada al respecto ni en mdsn. Asi que encare el objetivo por otro lado. Cree una lista de Items, en un foreach declaro un XElement y recorro _doc.Desendants("item"). De ese modo si puedo preguntar if el atributo es nulo Wink

guarda que ahí va el codigo:
Código
Lenguaje: csharp
int id;
string color;
Item item;
List<Item> lista = new List<Item>();
XDocument doc = XDocument.Load(@"c:\\datos.xml");
Foreach(XElement e in doc.Descendants("Item"))
{
   id = Int.Parse(e.Attribute("id").Value);
   if (e.Attribute("color") != null)  color = e.Attribute("color").Value;
   else color = null;
   item = new Item(id,color);
   lista.add(item);
}
A la clase Item le cree un constructor.
Bueno esto fue como extraer valores de atributos de elementos irregulares para la consola pc con winxp sp3, espero que les haya gustadooo chau.
« Última modificación: Marzo 05, 2010, 11:54:08 pm por JoEx » En línea
Severino
Moderador Global
*****
Mensajes: 2.998



« Respuesta #4 : Marzo 06, 2010, 10:30:43 am »

 okas
En línea

Solo los usuarios registrados pueden ver links.
Resgistrate o Inicia sesion
Páginas: [1]
  Agregar a favoritos  |  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.10 | SMF © 2006, Simple Machines LLC XHTML 1.0 válido! CSS válido!