2012-02-23 4 views
2

Этого вопроса является продолжение из ответившего вопроса: XmlDocument.SelectSingleNode and prefix + xmlNamespace issueXmlDocument.SelectSingleNode опускают префиксы и пространства имен

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

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

ответ

6

Это Безразлично» имеет значение, если имена префиксов изменяются, если URI пространства имен не изменяются.

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

namespaces.AddNamespace("foo", "http://exception.do29.imq.es/xsd"); 
XmlNode nodemsg = xmldocu.SelectSingleNode("//foo:message", namespaces); 
+0

Да, это прекрасно работает, спасибо – VSP

1

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

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

Основываясь на вопрос XPath select node with namespace

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