Reputation: 165
I want create xml file of this structure:
<Devices>
<Device Number="58" Name="Default Device" >
<Functions>
<Function Number="1" Name="Default func" />
<Function Number="2" Name="Default func2" />
<Function Number="..." Name="...." />
</Functions>
</Device>
</Devices>
Here's my code:
document.Element("Devices").Add(
new XElement("Device",
new XAttribute("Number", ID),
new XAttribute("Name", Name),
new XElement("Functions")));
Each object "device" have List<> of "functions", how can i add "functions" to xml???
Upvotes: 2
Views: 7768
Reputation: 63
document.Element("Devices").Add(
new XElement("Device",
new XAttribute("Number", ID),
new XAttribute("Name", Name),
new XElement("Functions", from f in functions select new XElement("Function", new XAttribute("Number", f.Number), new XAttribute("Name", f.Name)))));
functions would be your list of functions.
Upvotes: 1
Reputation: 1500385
Each object "device" have List<> of "functions", how can i add "functions" to xml???
Really easily - LINQ to XML makes this a doddle:
document.Element("Devices").Add(
new XElement("Device",
new XAttribute("Number", ID),
new XAttribute("Name", Name),
new XElement("Functions",
functions.Select(f =>
new XElement("Function",
new XAttribute("Number", f.ID),
new XAttribute("Name", f.Name))))));
In other words, you just project your List<Function>
to an IEnumerable<XElement>
using Select
, and the XElement
constructor does the rest.
Upvotes: 9