Pregunta

Necesito poder obtener un único atributo específico de un elemento con un nombre local específico pero cualquier espacio de nombres (si está familiarizado con XMPP entenderá por qué). Además de escribir mis propios métodos de extensión (enumerador o selección única), ¿alguna idea?

Tengo lo siguiente, pero no me gusta en absoluto:

        XAttribute from = (from c in elem.Attributes()
                           where c.Name.LocalName == "from"
                           select c).FirstOrDefault<XAttribute>();

        XAttribute to = (from c in elem.Attributes()
                         where c.Name.LocalName == "to"
                         select c).FirstOrDefault<XAttribute>();

editar: quisiera algo como:

        string val = (string)elem.Attribute("{*}to");

solución:

        XAttribute from = elem.Attributes()
            .FirstOrDefault(a => a.Name.LocalName == "from");

        XAttribute to = elem.Attributes()
            .FirstOrDefault(a => a.Name.LocalName == "to");
¿Fue útil?

Solución

Si no le gusta la sintaxis, puede usar esta;

elem.Attributes().FirstOrDefault(a=>a.Name.LocalName == "from");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top