2013-04-30 6 views
8

करने के लिए एक एक्सएमएल परिवर्तित मैं सूची मेंजेनेरिक सूची

<School> 
    <Student> 
    <Id>2</Id> 
    <Name>dummy</Name> 
    <Section>12</Section> 
    </Student> 
    <Student> 
    <Id>3</Id> 
    <Name>dummy</Name> 
    <Section>11</Section> 
    </Student> 
</School> 

मैं LINQ का उपयोग कर कुछ बातें करने की कोशिश की और आगे बढ़ने से पर इतना स्पष्ट नहीं कर रहा हूँ एक्सएमएल कन्वर्ट करने के लिए कोशिश कर रहा हूँ।

dox.Descendants("Student").Select(d=>d.Value).ToList(); 

Am हो रही संख्या 2 लेकिन मान यह जो है क्रमांक, नाम और धारा गुण प्रकार छात्र की एक सामान्य सूची के लिए ऊपर एक्सएमएल कन्वर्ट करने के लिए संभव है की तरह 2dummy12 3dummy11

कर रहे हैं?

मैं इसे कैसे कार्यान्वित कर सकता हूं सबसे अच्छा तरीका क्या है?

+2

मुझे लगता है कि यह लेख उपयोगी होगा [LINQ का उपयोग करके एक्सएमएल को ऑब्जेक्ट में कनवर्ट करें] (http://www.codeproject.com/Tips/366993/Convert-XML-to-Object-using-LINQ) –

उत्तर

11

आपको गुमनाम प्रकार

var studentLst=dox.Descendants("Student").Select(d=> 
new{ 
    id=d.Element("Id").Value, 
    Name=d.Element("Name").Value, 
    Section=d.Element("Section").Value 
    }).ToList(); 

इस गुमनाम प्रकार की एक सूची बनाता है ..


आप विद्यार्थी प्रकार की एक सूची बनाना चाहते हैं बना सकते हैं

class Student{public int id;public string name,string section} 

List<Student> studentLst=dox.Descendants("Student").Select(d=> 
new Student{ 
    id=d.Element("Id").Value, 
    name=d.Element("Name").Value, 
    section=d.Element("Section").Value 
    }).ToList(); 
+0

यह पूरी तरह से काम करता है। मैं इसे छात्रों की सूची में कैसे परिवर्तित करूं? – user2067567

+0

@ user2067567 संपादित करें – Anirudha

+0

धन्यवाद @ अनिरुध – user2067567

1

या आप कक्षा कॉल छात्र बना सकते हैं आईडी, नाम और गुण के रूप में खंड और साथ कार्य करें:

var students = from student in dox.Descendants("Student") 
      select new Student 
      { 
       id=d.Element("Id").Value, 
       Name=d.Element("Name").Value, 
       Section=d.Element("Section").Value 
      }).ToList(); 
12

मुझे लगता है कि आप एक जवाब स्वीकार कर लिया है। लेकिन मैं सिर्फ एक और तरीका दिखाना चाहता हूं जो मुझे पसंद है। सबसे पहले आप नीचे के रूप में कक्षाओं की आवश्यकता होगी:

public class Student 
{ 
    [XmlElement("Id")] 
    public int StudentID { get; set; } 

    [XmlElement("Name")] 
    public string StudentName { get; set; } 

    [XmlElement("Section")] 
    public int Section { get; set; } 
} 

[XmlRoot("School")] 
public class School 
{ 
    [XmlElement("Student", typeof(Student))] 
    public List<Student> StudentList { get; set; } 
} 

तो फिर तुम इस एक्सएमएल deserialize कर सकते हैं:

string path = //path to xml file 

using (StreamReader reader = new StreamReader(path)) 
{ 
    XmlSerializer serializer = new XmlSerializer(typeof(School)); 
    School school = (School)serializer.Deserialize(reader); 
} 

आशा है कि यह उपयोगी होगा।

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