C # .NET XML Обработка через XDocument. Потомки не выбирают объекты, как ожидалось - PullRequest
0 голосов
/ 16 января 2012

Использование XDocument и метода Потомки .

//first problem 'entries' doesn't fetch at all
var entries = xmlDoc.Descendants(XName.Get("entry"))
//neither does
//            xmlDoc.Descendants("entry")

var ids = from e in entries 
          select e.Element(XName.Get("id")).Value;

Тот же код XDocument работает с более подробным каналом блога, т.е. моим блогом: http://blog.nick.josevski.com/feed/ здесь фрагмент: http://pastebin.com/KU65dgwL, где элемент 'entry' заменен на 'item', а 'id' заменен на 'link'.

Для проверкилюбые предложения, которые я создал Суть кода LinqPad , которая демонстрирует проблему.

Я что-то упускаю из виду?Я пробовал различные комбинации .Elements() .Elements("entry") и просто .Descendants(), а затем пытался отфильтровать без удачи.

Это XML, который я пытаюсь извлечь из узла ввода / идентификатора.от:

<feed xmlns="http://www.w3.org/2005/Atom">
    <title type="text">Author</title>
    <subtitle type="text">subtitle</subtitle>
    <link rel="alternate" href="http://www.site.com/blog" />
    <entry>
        <id>http://www.site.com/a-blog-post</id>
        <title type="text">Title Of Blog Post</title>

    ...

    <entry>
        <id>http://www.site.com/another-blog-post</id>
        <title type="text">Title Of Another Blog Post</title>

1 Ответ

8 голосов
/ 16 января 2012

Вам не хватает пространства имен XML:

XNamespace ns = "http://www.w3.org/2005/Atom";
var entries = xmlDoc.Descendants(ns + "entry");
...