LINQ to XML 通过以下三个功能使这一切变得更加简单:
- 您可以在不知道对象所属文档的情况下构造对象
- 您可以构造一个对象并提供子对象作为参数
- 如果一个参数是可迭代的,它将被迭代
所以在这里你可以这样做:
void Main()
{
List<string> list = new List<string>
{
"Data1", "Data2", "Data3"
};
XDocument doc =
new XDocument(
new XElement("file",
new XElement("name", new XAttribute("filename", "sample")),
new XElement("date", new XAttribute("modified", DateTime.Now)),
new XElement("info",
list.Select(x => new XElement("data", new XAttribute("value", x)))
)
)
);
doc.Save("Sample.xml");
}
我特意使用了这种代码布局,以使代码本身反映文档的结构。
如果您想要一个包含文本节点的元素,您可以通过将文本作为另一个构造函数参数传递来构造它:
// Constructs <element>text within element</element>
XElement element = new XElement("element", "text within element");