Какова история XPath и поддержка пространств имен? XPath как спецификация предшествует пространствам имен? Если у меня есть документ, где элементам присваивается пространство имен по умолчанию:
<foo xmlns="uri" />
Кажется, что некоторые из процессорных библиотек XPath не распознают //foo
из-за пространства имен, тогда как другие будут. Опция, которую моя команда задумала, заключается в добавлении префикса пространства имен с использованием регулярных выражений в XPath (вы можете добавить префикс пространства имен через XmlNameTable), но это кажется хрупким, поскольку XPath является таким гибким языком, когда дело доходит до тестов node.
Есть ли стандарт, который применим к этому?
Мой подход немного хакерский, но, похоже, он работает нормально; Я удаляю объявление xmlns
с помощью поиска/замены, а затем применяю XPath.
string readyForXpath = Regex.Replace(xmldocument, "xmlns=\".+\"", String.Empty );
Это справедливый подход или кто-то решил это по-другому?