XmlDocument.SelectSingleNode опускает префиксы и пространства имен - PullRequest
2 голосов
/ 23 февраля 2012

Этот вопрос является продолжением ответа на вопрос: XmlDocument.SelectSingleNode и префикс + проблема xmlNamespace

Проблема состоит в том, что возможно, что в будущем префиксы пространств имен xmlполученный будет изменен без предупреждения, поэтому мы хотели бы знать, есть ли какой-либо способ использования SelectSingleNode, кроме пропуска префикса элемента.

(Мы знаем, что мы можем удалить все префиксы входящего xml, но этопотребовалось бы больше шагов .... хотя мы бы посчитали правильным ответ, если код предоставлен ...)

Ответы [ 2 ]

6 голосов
/ 23 февраля 2012

Неважно, изменяются ли имена префиксов, если не изменяются URI пространства имен.

Имя префикса, которое вы используете в своем коде, и имя в документе XML не обязательно должны совпадать, например,

namespaces.AddNamespace("foo", "http://exception.do29.imq.es/xsd");
XmlNode nodemsg = xmldocu.SelectSingleNode("//foo:message", namespaces);
1 голос
/ 23 февраля 2012

Его можно опустить, используя * в xpath, например:

//*[local-name()='ElementName']

На основании вопроса XPath выберите узел с пространством имен

В качестве дополнительногоэтот инструмент был очень полезен для проверки различных путей xpath .... http://xpathvisualizer.codeplex.com/

...