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