Я пытаюсь понять XDocument и это различные методы.XML XDocument - Кажется, что нет элементов
У меня есть карта сайта, и я пытаюсь прочитать URL-
<urlset xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>http://www.site.co.uk/</loc>
</url>
<url>
<loc>http://www.site.co.uk/page</loc>
</url>
</urlset>
выше разбирает хорошо, и я пытаюсь прочитать значения LOC (страницы, URL), но это, где это пойдет не так
string siteMapText = String.Empty();
GetValueOfPageFromWebClient(SiteMapUrl, out siteMapText);
XDocument siteMap =
XDocument.Parse(siteMapText);
foreach (var loc in siteMap.Descendants())
{
//logic
}
В моей C#
loc.Element("loc").Value //should show value but doesn't
Как перебрать loc
значений ?
EDIT
Согласно ответу Джона Скита, я попытался
Если я
foreach (var loc in siteMap.Descendants("loc"))
{
//never enters
}
То же самое относится и к
foreach (var loc in siteMap.Descendants("url"))
{
//never enters
}
Я должен был do foreach (var loc in s iteMap.Descendants()) { if (loc.Name.LocalName! = "url") continue; // код }
Может кто-нибудь объяснить, почему это так?
На самом деле, извините, это не сработает! Когда я перегружаю «Потомки» («loc») ', foreach перепрыгивает прямо (указывая, что у него нет детей). Даже если я обновляюсь до 'siteMap.Descendants (« url »)' тот же самый вопрос сохраняется – MyDaftQuestions
Странно, это работает для меня. Однако я получаю сообщение об ошибке при анализе XML, который вы указали в вопросе. Для вашей проблемы это может быть проблема с пространством имен, посмотрите на XML, который находится в siteMapText. – Philippe
@MyDaftQuestions: Это говорит о том, что XML не так, как вы показали, это - например. у вас есть пространство имен, которое вы не показывали. Это объясняет все, и его легко исправить, используя пространство имен. Если вы можете заставить XML в вопросе отражать * фактический * XML, который вы используете, я уверен, что мы сможем легко его исправить. –