दूसरों की तरह, मैं LINQ से XML का उपयोग करने का सुझाव दूंगा - लेकिन मुझे नहीं लगता कि XPath का उपयोग करने की बहुत आवश्यकता है।
static IEnumerable<string> GetKeywordNames(string file)
{
return XDocument.Load(file)
.Descendants("Keyword")
.Attributes("name")
.Select(attr => attr.Value);
}
अच्छा और कथात्मक :)
ध्यान दें कि अगर आप एक बार से अधिक परिणाम का उपयोग करना चाहते करने जा रहे हैं, तो आप कॉल करना चाहिए: यह एक फ़ाइल के भीतर सभी खोजशब्द नाम वापस जाने के लिए एक सरल विधि है ToList()
या ToArray()
, अन्यथा यह हर बार फ़ाइल को फिर से लोड करेगा। बेशक आप विधि कॉल की श्रृंखला के अंत में प्रासंगिक कॉल को जोड़कर List<string>
or string[]
वापस करने के लिए विधि को बदल सकते हैं, उदा।
static List<string> GetKeywordNames(string file)
{
return XDocument.Load(file)
.Descendants("Keyword")
.Attributes("name")
.Select(attr => attr.Value)
.ToList();
}
भी ध्यान रखें कि इस सिर्फ आप नाम देता है - मैं तुम्हें तत्वों के अन्य विवरण, जिस स्थिति में आप शायद कुछ अलग चाहते हैं चाहते करने की उम्मीद है। यदि यह पता चला है कि आपको और आवश्यकता है, तो कृपया हमें बताएं।
स्रोत
2009-11-01 14:02:44
यही वही है जो मुझे चाहिए लेकिन ... मैं स्ट्रिंग सरणी के रूप में "जो कुछ भी" डालूं? –
सिंटैक्स हाइलाइटिंग के लिए, मुझे बहुत संदेह है कि वह फ़ाइल को और अधिक पढ़ना चाहेंगे। स्पष्ट समाधान इसे * एक बार * पढ़ना है, जिसका अर्थ है कि गति पठनीयता से बहुत कम महत्वपूर्ण है। LINQ से XML का उपयोग करना यहां स्पष्ट समाधान है, आईएमओ। –
@ जोनस्केट मैं सहमत हूं - वास्तव में मैंने इस दृष्टिकोण पर विचार करने का सुझाव दिया है यदि प्रदर्शन एक मुद्दा साबित होता है (उदाहरण के लिए - फ़ाइल को एक बार पढ़ना - यह मामला हो सकता है कि इसे बड़ी संख्या में बड़ी फ़ाइलों पर किया जाना चाहिए और स्टार्टअप/लोड प्रदर्शन को काफी प्रभावित किया जा सकता है) – JohnIdol