ЛИНК:Получить атрибут с любым пространством имен, но с конкретным именем
-
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");
Не связан с StackOverflow