Получение значения с помощью Linq to Xml - PullRequest
2 голосов
/ 28 ноября 2011

У меня следующая структура XML:

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <sitemap>
  <loc>http://www.example.com/</loc>
  <lastmod>2011-11-27T08:34:46+00:00</lastmod>
 </sitemap>
 <sitemap>
  <loc>http://www.example.com/123</loc>
  <lastmod>2011-11-27T08:34:46+00:00</lastmod>
 </sitemap>
</sitemapindex>

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

loc: http://www.example.com/ - lastmod: 2011-11-27T08: 34: 46 + 00: 00
loc: http://www.example.com/123 - lastmod: 011-11-27T08: 34: 46 + 00: 00

Я использовал следующий код, но, похоже, ничего не работает:

XElement root = XElement.Load ("data.xml");

var results = from el in root.Elements("sitemap")
              select new
              {
                  loc = (string) el.Element("loc"),
                  lastmod = (string) el.Element("lastmod")
              };


foreach (var result in results)
{
    Console.WriteLine("loc:" + result.loc + " - lastmod:" + result.lastmod);
}

даже этот запрос ничего не возвращает:

var results = from el in root.Elements("sitemap")
              select el;

Я новичок в Linq для Xml, пожалуйста, помогите.

1 Ответ

3 голосов
/ 28 ноября 2011

Проблема в том, что вы пытаетесь выбрать элементы без пространств имен.Попробуйте вместо этого:

XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9";
var results = from el in root.Elements(ns + "sitemap")
              select new
              {
                  loc = (string) el.Element(ns + "loc"),
                  lastmod = (string) el.Element(ns + "lastmod")
              };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...