当前位置: 首页 > 编程语言 > C#

C#向xml文件添加数据分享

时间:2023-04-10 14:56:29 C#

C#向xml文件添加数据为了学习C#和WPF,我正在构建一个Parts应用程序。我在尝试使用XmlWriter添加新部件时遇到问题。我可以创建xml文件,但不知道如何添加其他部分。我应该使用类似XmlDocument的东西吗?这是我背后的代码:privatevoidbtnSave_Click(objectsender,RoutedEventArgse){settings.Encoding=Encoding.UTF8;设置.Indent=true;使用(XmlWriterwriter=XmlWriter.Create("f:\MyParts.xml",settings)){writer.WriteStartDocument();writer.WriteStartElement("MyParts");writer.WriteStartElement("部分");writer.WriteStartElement("item");writer.WriteString(txtbxitemwriter.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();这是我要创建的内容:Part1RedSMPart2BlueXXL我个人推荐使用LINQtoXML。这是一个比XmlDocument更容易使用的API。但是,是的,如果您要修改现有文档,使用内存中表示通常比使用流式API更简单。当然可以做到后者,但这并不容易。这是创建相同XML的示例(除了声明:您有什么理由想要使用Latin-1而不是可以代表整个Unicode的UTF-8,顺便说一句?)vardoc=newXDocument(newXElement("MyParts",newXElement("parts",newXElement("item","Part1"),newXElement("color","Red"),newXElement("size","SM")),newXElement("零件",newXElement("item","Part2"),newXElement("color","Blue"),newXElement("size","XXL"))));然后如果你想添加另一个部分:doc.Root.Add(newXElement("parts",newXElement("item","Part3"),newXElement("color","Green"),newXElement("尺寸","L")));无可否认,我希望您希望将“创建部件元素”位封装到一个方法中以避免一直重复它……但希望您能理解。使用循环,你会得到类似这样的东西:varparts=newList(){......partshere......};使用(XmlWriterwriter=XmlWriter.Create("f:\MyParts.xml",settings)){writer.WriteStartDocument();writer.WriteStartElement("MyParts");foreach(varpartinparts){writer.WriteStartElement("parts");writer.WriteStartElement("item");writer.WriteString(part.Item);writer.WriteEndElement();//writer.WriteStartElement("color");writer.WriteString(part.Color);writer.WriteEndElement();writer.WriteStartElement("大小");writer.WriteString(part.Size);writer.WriteEndElement();//writer.WriteEndElement();//}writer.WriteEndElement();//writer.WriteEndDocument();writer.Flush();writer.Close();总体思路是,对于零件列表中的每个零件,您使用Part类中的数据编写“零件”(应该是“零件”吗?)标签及其所有内容,填充项目、颜色和尺寸,在最简单的形式可以是:classPart{publicstringItem{get;放;}公共颜色颜色{得到;放;}公共字符串大小{得到;然后写一个子元素“parts”,再写一个子元素“item”,其值在textbox中任何东西这是一些家庭作业,而且很容易用谷歌搜索,所以我只给出一个快速的伪答案。您(可能)想要:为具有所需成员的部件创建适当的类创建这些项目的集合从UI更新内存中的集合使用您选择的XML格式和函数保存集合(包括但不限于到您上面所做的,或LINQtoXML,或XML序列化,或...)您是否考虑过使用.NET附带的开箱即用的XML序列化?您只需使用对象填充一些集合,然后使用XML序列化程序将其保存到一个文件中。然后,您可以使用DeSerializer来组合您的对象。这将使您可以将更多时间花在应用程序的UI(WPF)和逻辑上。您需要做的就是为您的类提供所有可序列化的属性。这是一个很好的例子:http://www.jonasjohn.de/snippets/csharp/xmlserializer-example.htm最大的好处是随着时间的推移构建数据对象,序列化/反序列化将随之增长。以上就是C#学习教程:C#添加数据到xml文件分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: