2012-02-01 10 views
5

का उपयोग कर कैसे उचित रूप से इस XElement का उपयोग कर पार्स करने के लिए खोजने के लिए प्रतीत नहीं कर सकते हैं पार्स:एक्सएमएल XElement

<messages> 
    <message subclass="a" context="d" key="g"> 
    <message subclass="b" context="e" key="h"> 
    <message subclass="c" context="f" key="i"> 
</messages> 

मैं एक सूची जहां तीन तार उपवर्ग, संदर्भ, कुंजी है करने के लिए इस बाहर निकलना चाहते हैं।

उत्तर

22

आपका इनपुट मान्य XML नहीं है, इसमें आंतरिक संदेश तत्वों पर बंद टैग गुम हैं। लेकिन यह सोचते हैं प्रारूप मान्य था, आप अपने संरचना के रूप में पार्स सकता है:

string xml = @"<messages> 
        <message subclass=""a"" context=""d"" key=""g""/> 
        <message subclass=""b"" context=""e"" key=""h""/> 
        <message subclass=""c"" context=""f"" key=""i""/> 
       </messages>"; 

var messagesElement = XElement.Parse(xml); 
var messagesList = (from message in messagesElement.Elements("message") 
        select new 
        { 
         Subclass = message.Attribute("subclass").Value, 
         Context = message.Attribute("context").Value, 
         Key = message.Attribute("key").Value 
        }).ToList(); 

तुम भी एक पूर्ण XML दस्तावेज़ के लिए XDocument उपयोग करें, और Parse के बजाय Load विधि का उपयोग कर सकते हैं अगर आप एक एक्सएमएल फ़ाइल उपयोग कर रहे थे या एक धारा, उदाहरण के लिए। इसके अतिरिक्त, यदि आप एक परिभाषित हैं तो आप एक ठोस वर्ग में चयन कर सकते हैं।

class Message 
{ 
    public string Subclass { get; set; } 
    public string Context { get; set; } 
    public string Key { get; set; } 
} 

के एक वर्ग परिभाषा आप क्वेरी में select new Message इस्तेमाल कर सकते हैं, और परिणाम एक List<Message> होगा, जबकि अभी यह एक गुमनाम प्रकार की एक सूची है को देखते हुए।

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