2013-01-09 16 views
8

मैंने स्टैक ओवरफ़्लो पर कुछ धागे को देखा और मुझे जवाब नहीं मिला। मैं निम्नलिखित की तरह एक xml फ़ाइल सेटअप:सी # पार्सिंग एक्सएमएल फ़ाइल

<entry id="1" type="a"> 
    <name>string 1</name> 
    <description>any description</description> 
</entry> 
<entry id="2" type="b"> 
    <name>string 2</name> 
    <description>any description #2</description> 
</entry> 

मैं सभी "प्रविष्टि" टैग का चयन करें और आईडी, प्रकार, प्रवेश के भीतरी नाम और विवरण टैग लौटना ही होगा। मैं सी # के साथ ऐसा कैसे कर सकता हूं?

धन्यवाद, HtmlAgilityPack पुस्तकालय में

+0

यह निश्चित रूप से एक्सएमएल की तरह दिखता है ... इस प्रकार, मैं एक्सडी दस्तावेज़ और एक्सएमएल के लिए LINQ एक्सटेंशन का उपयोग करता हूं। यदि आप अतिरिक्त शक्ति (जटिलता के खर्च पर, कुछ मामलों में) की आवश्यकता होती है तो आप XPath का भी उपयोग कर सकते हैं। Http://stackoverflow.com/questions/566167/query-an-xdocument-for-elements-by-name-at-any-depth –

+0

http://msdn.microsoft.com/en-us/library/system देखें .xml.linq.xdocument.descendants.aspx (descendants के साथ XMl के लिए लिंक एक अच्छा staring बिंदु है)। –

उत्तर

13

ध्यान रखें, कि आपकी xml फ़ाइल में एकल रूट नोड होना चाहिए। यहाँ Xml के लिए Linq साथ पार्स करने है:

var xdoc = XDocument.Load(path_to_xml); 
var entries = from e in xdoc.Descendants("entry") 
       select new { 
       Id = (int)e.Attribute("id"), 
       Type = (string)e.Attribute("type"), 
       Name = (string)e.Element("name"), 
       Description = (string)e.Element("description") 
       }; 

क्वेरी प्रत्येक प्रविष्टि तत्व करने के लिए इसी गुमनाम वस्तुओं के अनुक्रम वापस आ जाएगी (गुण आईडी, प्रकार, नाम, और विवरण के साथ)।

+0

@ user1425433 [एक्सएमएल दस्तावेज़ों में रूट तत्व होना चाहिए] (http://www.w3schools.com/xml/xml_syntax.asp) आपके प्रश्न में रूट स्तर पर दो * प्रविष्टि * तत्व हैं –

1

देखो। इसका उपयोग करके आप LINQ या XPath का उपयोग कर HTML को पार्स कर सकते हैं।

संबंधित मुद्दे