как бороться с "багом" в пространстве имен Microsoft xpath? - PullRequest
0 голосов
/ 10 февраля 2012

При обработке 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, который также "чувствует себя правильно"?

1 Ответ

4 голосов
/ 10 февраля 2012

Если вы действительно не заботитесь о пространствах имен, то я бы сказал, что вычеркнуть их из XML, кажется, будет правильным.Я бы не рекомендовал такой подход в производственной среде, где вам, вероятно, следует заботиться о пространствах имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...