मैं इस समस्या संदेह है कि आप document.Elements("url")
बजाय document.Root.Elements("url")
से जा रहे हैं ... तो यह url
के जड़ तत्व है, जो अस्तित्व में नहीं है की तलाश में है।
इस प्रयास करें:
List<string> urlList = doc.Root.Elements("url")
.Elements("loc")
.Select(x => (string) x)
.ToList();
ध्यान दें कि मैं Descendants
यहाँ उपयोग नहीं किया है, के रूप में loc
तत्वों वैसे भी url
तत्वों के ठीक नीचे सभी कर रहे हैं।
एक अन्य विकल्प अगर केवलloc
तत्वों सही हैं वैसे भी हैं, तो आप इस्तेमाल कर सकते हैं बस है: स्थिति की इस तरह के लिए
List<string> urlList = doc.Descendants("loc")
.Select(x => (string) x)
.ToList();
(मैं यह सोचते हैं रहा हूँ urlList
पहले से खाली था ... मैं पूरे ऑपरेशन के लिए LINQ का उपयोग करना और foreach
लूप को समाप्त करना जो सिर्फ संग्रह में जोड़ रहे हैं।)
संपादित करें: कोड मेरे लिए काम करता है। यहाँ एक छोटा लेकिन पूरा कार्यक्रम है:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
class Test
{
static void Main(string[] args)
{
string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<urlset>
<url>
<loc>element1</loc>
<changefreq>daily</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>element2</loc>
<changefreq>daily</changefreq>
<priority>0.2</priority>
</url>
</urlset>";
XDocument doc = XDocument.Parse(xml);
List<string> urlList = doc.Root
.Elements("url")
.Elements("loc")
.Select(x => (string) x)
.ToList();
Console.WriteLine(urlList.Count);
}
}
स्रोत
2011-08-06 09:05:22
हाय जॉन! मैंने आपका कोड इस्तेमाल किया लेकिन मेरा यूआरएललिस्ट अभी भी खाली है! :((मैं एक स्ट्रिंग से xml पार्स)। –
@Chelsea_cole: अब जांच रहा है ... –
@Chelsea_cole: मेरे लिए काम करता है - मैंने इसे पूरा करने वाला एक पूरा कार्यक्रम पोस्ट किया है। ध्यान दें कि मुझे अपना मूल एक्सएमएल ठीक करना था, '' से 'के अंत में। कृपया मेरा कोड आज़माएं, और फिर देखें कि इसके बीच क्या अंतर है और आप क्या प्रयास कर रहे थे ... –