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 ...