Проблема XmlNodeList SelectNodes
Я пытаюсь разобрать xml файл
Мой код выглядит так:
string path2 = "xmlFile.xml";
XmlDocument xDoc = new XmlDocument();
xDoc.Load(path2);
XmlNodeList xnList = xDoc.DocumentElement["feed"].SelectNodes("entry");
Но не могу получить список узлов. Я получаю сообщение об ошибке: "Используйте ключевое слово" new "для создания экземпляра объекта". и он, кажется, находится на "SelectNodes (" entry ")". Этот код работал, когда я загружал XML из RSS-канала, но не из локального файла. Можете ли вы сказать мне, что я делаю не так?
Мой XML выглядит так:
<?xml version="1.0"?>
<feed xmlns:media="http://search.yahoo.com/mrss/" xmlns:gr="http://www.google.com/schemas/reader/atom/" xmlns:idx="urn:atom-extension:indexing" xmlns="http://www.w3.org/2005/Atom" idx:index="no" gr:dir="ltr">
<entry gr:crawl-timestamp-msec="1318667375230">
<title type="html">Title 1 text</title>
<summary>summary 1 text text text</summary>
</entry>
<entry gr:crawl-timestamp-msec="1318667375230">
<title type="html">title 2 text</title>
<summary>summary 2 text text text</summary>
</entry>
</feed>
2 ответа
Возьмите пространство имен в учетную запись:
XmlNamespaceManager mgr = new XmlNamespaceManager(XDoc.NameTable);
mgr.AddNamespace("atom", "http://www.w3.org/2005/Atom");
XmlNodeList xnList = xDoc.SelectNodes("//atom:entry", mgr);
Это самый печально известный FAQ о XPath - это ссылки на имена элементов, которые находятся в пространстве имен по умолчанию.
Краткий ответ: найдите "пространство имен XPath по умолчанию" и поймите проблему.
Тогда используйте XmlNamespaceManager
экземпляр, чтобы добавить связь между префиксом (скажем, "x"
) и пространство имен по умолчанию (в вашем случае "http://www.w3.org/2005/Atom"
).
Наконец, замените любой Name
с x:Name
в вашем выражении XPath.