LINQ to XML: игнорирование регистра атрибутов
Я использую LINQ to XML для работы с файлом PackageContents.xml, созданным компанией Autodesk. Компания определила структуру этого XML-файла здесь, но без схемы XSD.
У меня проблема: эта компания нарушает его правила... Часто регистр элементов и атрибутов недействителен. Например, вместо атрибута "URL" может быть определен атрибут "Url" (другой регистр).
Но дело важно для XML (или, на английском языке):
Как и имена элементов, имена атрибутов чувствительны к регистру и должны начинаться с буквы или подчеркивания.
"URL" не равен "URL" - такой атрибут не найден.
Могу ли я решить эту проблему с помощью LINQ to XML (или другого) или не могу?
1 ответ
Хотя это правильно, что myXelement.Attribute("URL")
потребуется правильный случай, ничто не мешает вам делать
var attribute = x.Attributes()
.SingleOrDefault(xa =>
string.Equals(xa.Name.LocalName,
"Url",
StringComparison.InvariantCultureIgnoreCase));
Оберните это в подходящее расширение или статический вспомогательный метод, и ваш потребляющий код не должен быть слишком плохим.