user192332
user192332

Reputation:

C#: XML To Type -LINQ

How to convert XML Elements to of type Person ?

Elements :

XElement persons = XElement.Parse(
               @"<persons>
                   <person>
                        <id>10001</id>     
                       <name> Daniel </name> 
                   </person>
                   <person>
                        <id>10002</id>     
                       <name>Marshal</name> 
                   </person>
                    <person>
                        <id>10003</id>     
                       <name>Leo</name> 
                   </person>
                 </persons>"
            );

Person Type:

class Person
    {
        int personID;
        string name;

        public int PersonID
        {
            get {return personID;}
            set {personID = value;}
        }

        public string Name
        {
            get {return name;}
            set {name = value;}
        }
    }

I tried (incomplete & not sure whether valid approach )

 Person[] Prns = from perns in persons.Nodes select new {perns};

Upvotes: 1

Views: 107

Answers (2)

svick
svick

Reputation: 245046

Another option would be to use XML serialization, but using LINQ to XML is probably easier:

[XmlType("person")]
public class Person
{
    int personID;
    string name;

    [XmlElement("id")]
    public int PersonID
    {
        get { return personID; }
        set { personID = value; }
    }

    [XmlElement("name")]
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}

…

var serializer = new XmlSerializer(typeof(Person[]), new XmlRootAttribute("persons"));
var result = (Person[])serializer.Deserialize(new StringReader(xml));

Upvotes: 0

Chris Fulstow
Chris Fulstow

Reputation: 41902

var personList =
    from p in persons.Elements("person")
    select new Person
    {
        Name = p.Element("name").Value,
        PersonID = int.Parse(p.Element("id").Value)
    };

Upvotes: 3

Related Questions