1], Если у Вас есть XML-файл без какого-либо префикса в пространстве имен:
<bookstore xmlns="http://www.contoso.com/books">
…
</bookstore>
у Вас есть это обходное решение:
XmlTextReader reader = new XmlTextReader(@"C:\Temp\books.xml");
// ignore the namespace as there is a single default namespace:
reader.Namespaces = false;
XPathDocument document = new XPathDocument(reader);
XPathNavigator navigator = document.CreateNavigator();
XPathNodeIterator nodes = navigator.Select("//book");
2], Если у Вас есть XML-файл с префиксом в пространстве имен:
<bookstore xmlns:ns="http://www.contoso.com/books">
…
</bookstore>
Использование это:
XmlTextReader reader = new XmlTextReader(@"C:\Temp\books.xml");
XPathDocument document = new XPathDocument(reader);
XPathNavigator navigator = document.CreateNavigator();
XPathNodeIterator nodes = navigator.Select("//book");
, Конечно, можно использовать пространство имен, справляются в случае необходимости:
XmlTextReader reader = new XmlTextReader(@"C:\Temp\books.xml");
XPathDocument document = new XPathDocument(reader);
XPathNavigator navigator = document.CreateNavigator();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(reader.NameTable);
nsmgr.AddNamespace("ns", "http://www.contoso.com/book");
XPathNodeIterator nodes = navigator.Select("//book", nsmgr);
я думаю, что это - самый легкий способ сделать код, работающий в большинстве случаев.
я надеюсь что эта справка для решения этой Microsoft issue†¦