Alex F
Alex F

Reputation: 165

Creating xml with xdocument

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

Answers (2)

Pankaj Mane
Pankaj Mane

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

Jon Skeet
Jon Skeet

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

Related Questions