Мне часто приходится иметь дело с XML-документами, которые содержат элементы пространства имен, но не объявляют пространство имен. Например:
<root>
<a:element/>
</root>
Поскольку префиксу "a" никогда не назначается URI пространства имен, документ недействителен. Когда я загружаю такой документ XML, используя следующий код:
using (StreamReader reader = new StreamReader(new FileStream(inputFileName,
FileMode.Open, FileAccess.Read, FileShare.ReadWrite))) {
doc = XDocument.Load(reader, LoadOptions.PreserveWhitespace);
}
он выдает исключение, заявляющее (правильно), что документ содержит необъявленное пространство имен и не является правильно сформированным.
Итак, могу ли я предопределить префикс пространства имен по умолчанию -> пары URI пространства имен для парсера, к которому можно обратиться? XMLNamespaceManager выглядит многообещающе, но не знаю, как применить его в этой ситуации (или, если смогу).