ЛИНК:Получить атрибут с любым пространством имен, но с конкретным именем

StackOverflow https://stackoverflow.com/questions/295125

  •  08-07-2019
  •  | 
  •  

Вопрос

Мне нужно иметь возможность получить один конкретный атрибут из элемента с определенным локальным именем, но в любом пространстве имен (если вы знакомы с XMPP, вы поймете, почему).Помимо написания собственных методов расширения (перечислитель или одиночный выбор), есть какие-нибудь идеи?

У меня есть следующее, но оно мне совсем не нравится:

        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>();

редактировать:хотелось бы что-то вроде:

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

решение:

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

        XAttribute to = elem.Attributes()
            .FirstOrDefault(a => a.Name.LocalName == "to");
Это было полезно?

Решение

Если вам не нравится синтаксис, вы можете использовать этот;

elem.Attributes().FirstOrDefault(a=>a.Name.LocalName == "from");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top