gpt4 book ai didi

C# 向xml文件中添加数据

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:59 27 4
gpt4 key购买 nike

我正在构建一个部件应用程序以学习 C# 和 WPF。我尝试使用 XmlWriter 添加新部件时遇到问题。我可以创建 xml 文件,但不知道如何添加其他部分。我应该使用其他类似 XmlDocument 的东西吗?这是我的代码:

private void btnSave_Click(object sender, RoutedEventArgs e)
{

XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8;
settings.Indent = true;

using (XmlWriter writer = XmlWriter.Create("f:\\MyParts.xml", settings))
{
writer.WriteStartDocument();
writer.WriteStartElement("MyParts");
writer.WriteStartElement("parts");
writer.WriteStartElement("item");
writer.WriteString(txtbxitem.Text);
writer.WriteEndElement();

writer.WriteStartElement("color");
writer.WriteString(txtbxcolor.Text);
writer.WriteEndElement();

writer.WriteStartElement("size");
writer.WriteString(txtbxsize.Text);
writer.WriteEndElement();

writer.WriteEndElement();
writer.WriteEndDocument();

writer.Flush();
writer.Close();

}
}

这段代码正确地创建了 xml 文件和一个节点,但是我该如何添加额外的部分呢?这是我要创建的内容:

 <?xml version="1.0" encoding="ISO-8859-1" ?> 

<MyParts>
<parts>
<item>Part1</item>
<color>Red</color>
<size>SM</size>
</parts>
<parts>
<item>Part2</item>
<color>Blue</color>
<size>XXL</size>
</parts>
</MyParts>

最佳答案

我个人建议使用 LINQ to XML。这是一个比 XmlDocument 更易于使用的 API。

但是,是的,如果您想修改现有文档,那么通常使用内存中表示比使用流式 API 更简单。当然,后者可能,但这并不容易。

这是一个创建与您已经获得的相同 XML 的示例(声明除外:您希望使用 Latin-1 而不是类似 UTF-8 的任何原因,它可以代表整个 Unicode,顺便说一句?)

var doc = new XDocument(
new XElement("MyParts",
new XElement("parts",
new XElement("item", "Part1"),
new XElement("color", "Red"),
new XElement("size", "SM")),
new XElement("parts",
new XElement("item", "Part2"),
new XElement("color", "Blue"),
new XElement("size", "XXL"))));

然后如果你想添加另一个部分:

doc.Root.Add(
new XElement("parts",
new XElement("item", "Part3"),
new XElement("color", "Green"),
new XElement("size", "L")));

诚然,我希望您能将“创建部件元素”位封装到一个方法中,以避免一直重复它……但希望您明白了。

关于C# 向xml文件中添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3875131/

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