При обработке xmlDocument с помощью xPath с использованием, например, SelectNodes, в документах, содержащих любые объявления пространства имен, есть поведение, которое я считаю ошибкой:
Если документ xml содержит какие-либо объявления пространств имен (например, xmlns = ..... или что-то подобное), xquerry всегда будет пустым.
Ленивый способ справиться с этим - запустить следующий код в тексте xml перед загрузкой в XmlDocumennt:
pg = Regex.Replace(pg, @"xmlns\s*\=\s*""[^""]*""", "");
pg = Regex.Replace(pg, @"xmlns\s*\=\s*'[^']*'", "");
Мы также можем использовать XmlNamespaceManager для переноса информации о пространстве имен в вызов xpath. Я нахожу оба подхода обременительными (я обычно не знаю пространств имен документов, с которыми будет работать программное обеспечение, и, кроме того, мне все равно).
Существует ли простой в использовании способ отключить такое поведение синтаксического анализатора XPath от Microsoft, который также "чувствует себя правильно"?