61
задан 25 February 2009 в 15:34

1 ответ

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†¦

0
ответ дан 31 October 2019 в 14:51

Другие вопросы по тегам:

Похожие вопросы: