Разбор XML-элементов с помощью LINQ - PullRequest
1 голос
/ 23 июля 2011

У меня есть этот XML.

<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="el-gr" xmlns="http://www.w3.org/2005/Atom">
<title type="text">name.gr</title>
<updated>2011-07-23</updated>
<link href="link" />
<entry>    
  <title type="html">Οι επιθέσεις σε σκανδιναβικές χώρες</title>
  <summary type="text">Η Νορβηγία, μία από τις σκανδιναβικές χώρες, έζησε μετά από πάρα  πολλά χρόνια (2006) τον τρόμο. Δείτε αναλυτικά τις τελευταίες «τυφλές» επιθέσεις τα τελευταία χρόνια:...</summary>
  <published>2011-07-23T12:54:00+03:00</published>    
  <link href="link" />
</entry>

Я хочу разобрать некоторые элементы внутри. Для этого я использую следующий код LINQ.

var list = from y in xelement.Descendants("entry")
           select new Update()
           {
               Title = y.Element("title").Value,
               Pubdate = y.Element("published").Value,
               Descr = y.Element("content").Value,
               Link = y.Element("link").Attribute("href").Value
           };

Но это не работает. Может кто-нибудь сказать мне, что я делаю не так?

Ответы [ 2 ]

1 голос
/ 23 июля 2011

Все узлы находятся в пространстве имен http://www.w3.org/2005/Atom. Поэтому вам необходимо добавить к этим пространствам имен префикс, иначе запрос попытается найти эти элементы в пустом пространстве имен.

XNamespace atom = "http://www.w3.org/2005/Atom";
var list = from y in xelement.Descendants(atom+"entry")
               select new Update()
               {
                   Title = y.Element(atom+"title").Value,
                   Pubdate = y.Element(atom+"published").Value,
                   Descr = y.Element(atom+"content").Value,
                   Link = y.Element(atom+"link").Attribute("href").Value
               };
0 голосов
/ 23 июля 2011

В вашем примере XML отсутствует конечная метка "feed", и вы используете элемент "content", но я предполагаю, что "summary" правильное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...