I'm trying to parse xml into a hierachy of objects and I'm not sure how to recurse the hierachy properly. I do have a rough solution (not a good one) which is the call to GetChild which parses an XElement and returns a collection. I'm hoping someone knows how to achieve this in a pure linq expression ie. to populate Parent-Child-Item relationship into a List without a call inline to functions like GetChild()
Thanks
var element = XElement.Parse(@"<Root RegisterVersion='1.0' xmlns='http://www.test.com.au/docs/schemas' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.test.com/docs/schemas/spin/surcharge http://www.test.com/docs/schemas/test.xsd'>
<Parent id='1' name='parent1'>
<Child id='1' name='child1'>
<Item id='1' name='someitem'></Item>
</Child>
</Parent>
<Parent id='2' name='parent2'>
<Child id='2' name='child2'>
<Item id='2' name='someotheritem'></Item>
</Child>
</Parent>
</Root>
");
XNamespace ns = element.Name.Namespace;
var list =
from compileItem in element.Elements (ns + "Parent")
select new Parent
{
Id = compileItem.Attribute("id").Value.ToString(),
Name = compileItem.Attribute("name").Value.ToString(),
children = GetChild(compileItem)
// this call here I'd like to replace with another linq select
};
public List<Child> GetChild(XElement frag)
{
//etc
}
public List<Item> GetItem(XElement frag)
{
//etc
}