gpt4 book ai didi

c# - 在 C# 中使用 XDocument 创建 XML 文件

转载 作者:IT王子 更新时间:2023-10-29 03:39:39 35 4
gpt4 key购买 nike

我有一个 List<string> “sampleList”,其中包含

Data1
Data2
Data3...

文件结构如下

<file>
<name filename="sample"/>
<date modified =" "/>
<info>
<data value="Data1"/>
<data value="Data2"/>
<data value="Data3"/>
</info>
</file>

我目前正在使用 XmlDocument 来执行此操作。

例子:

List<string> lst;
XmlDocument XD = new XmlDocument();
XmlElement root = XD.CreateElement("file");
XmlElement nm = XD.CreateElement("name");
nm.SetAttribute("filename", "Sample");
root.AppendChild(nm);
XmlElement date = XD.CreateElement("date");
date.SetAttribute("modified", DateTime.Now.ToString());
root.AppendChild(date);
XmlElement info = XD.CreateElement("info");
for (int i = 0; i < lst.Count; i++)
{
XmlElement da = XD.CreateElement("data");
da.SetAttribute("value",lst[i]);
info.AppendChild(da);
}
root.AppendChild(info);
XD.AppendChild(root);
XD.Save("Sample.xml");

如何使用 XDocument 创建相同的 XML 结构?

最佳答案

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");
}

我特意使用这种代码布局,使代码本身反射(reflect)文档的结构。

如果你想要一个包含文本节点的元素,你可以通过传入文本作为另一个构造函数参数来构造它:

// Constructs <element>text within element</element>
XElement element = new XElement("element", "text within element");

关于c# - 在 C# 中使用 XDocument 创建 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2948255/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com