Reputation: 1633
I Want to Parse XML with Linq.
Here is My XML Data.
<?xml version="1.0" encoding="utf-8" ?>
<people>
<person>
<firstname>Kate</firstname>
<lastname>Smith</lastname>
<Address>Address</Address>
<Address>Address2</Address>
<Address>Address3</Address>
<age>27</age>
</person>
<person>
<firstname>Tom</firstname>
<lastname>Brown</lastname>
<Address>Address4</Address>
<Address>Address5</Address>
<Address>Address6</Address>
<age>30</age>
</person>
<person>
<firstname>Tim</firstname>
<lastname>Stone</lastname>
<Address>Address7</Address>
<Address>Address8</Address>
<Address>Address9</Address>
<age>36</age>
</person>
<person>
<firstname>Ann</firstname>
<lastname>Peterson</lastname>
<Address>Address10</Address>
<Address>Address11</Address>
<Address>Address12</Address>
<age>27</age>
</person>
</people>
public class XmlParser
{
List<Person> List = new List<Person>();
public XmlParser()
{
XDocument loadedData = XDocument.Load("Persons.xml");
var data = (from query in loadedData.Descendants("person")
select new Person
{
FirstName = (string)query.Element("firstname"),
LastName = (string)query.Element("lastname"),
//Address = (List<string>)query.Element("Address"), // I Want To Load All Address Into My List
Age = (int)query.Element("age")
}).ToList();
List.AddRange(data);
}
public class Person
{
string firstname;
string lastname;
List<string> address;
int age;
public string FirstName
{
get { return firstname; }
set { firstname = value; }
}
public string LastName
{
get { return lastname; }
set { lastname = value; }
}
public List<string> Address
{
get { return address; }
set { address = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
}
}
Can Anyone Please Help Me How To Add Adrress Into List in LINQ Query. As You Can See There Are Many Address Nodes Under The Person. So How I Can Add All Address into My List Object.
Upvotes: 0
Views: 358
Reputation: 152
One way to get the list of elements would be to nest another linq query in your original linq query.
var loadedData = XDocument.Load("Persons.xml");
var data = (from query in loadedData.Descendants("person")
select new Person
{
FirstName = (string)query.Element("firstname"),
LastName = (string)query.Element("lastname"),
Address = (from address in query.Elements("Address")
select address.Value).ToList(),
Age = (int)query.Element("age")
});
This pattern occurs all the time in linq to xml so i would remember it.
Upvotes: 3