C# 使用XML序列化程序和TextWriter将节点追加到XML根节点
是否有任何方法可以使用XML序列化程序将数据附加到现有XML文档中。 我现在是这样做的C# 使用XML序列化程序和TextWriter将节点追加到XML根节点,c#,xml,linq,xmlserializer,C#,Xml,Linq,Xmlserializer,是否有任何方法可以使用XML序列化程序将数据附加到现有XML文档中。 我现在是这样做的 string filePath = "Data.xml"; var serializer = new XmlSerializer(typeof(Event)); extWriter writer = new StreamWriter(filePath, true); serializer.Serialize(writer, event); 这种方法像根节点而不是子节点一样添加元素……我也使用LINQ to
string filePath = "Data.xml";
var serializer = new XmlSerializer(typeof(Event));
extWriter writer = new StreamWriter(filePath, true);
serializer.Serialize(writer, event);
这种方法像根节点而不是子节点一样添加元素……我也使用LINQ to XML,这种方法工作得很好,但这种方法似乎是硬编码的。
是否有任何方法可以使用此方法实现此功能。否,如果不加载文件,则无法对其进行操作。序列化程序始终处理整个文件 因此,正确的修改方法是将文件加载到内存中,修改它,然后再次保存
对于直接匿名Xml节点级操作,您应该使用XmlDocument.Load,而不是XmlSerializer。XmlSerializer首先将XML转换为自定义类。如果要添加自定义对象,这可能会更简单;如果要添加xml节点,最好使用XmlDocument。如果现在数据位于文件末尾 您可以以文本形式打开文件 穷尽 删除最后一行 写下数据 然后再次添加最后一行
只有在写入大型统一文件时才建议这样做不能使用XmlSerializer追加数据,如果要在XML文件中间添加节点,最好使用XDocument。它可能看起来像它的“硬编码”,但这是实现这一点的方法。正如@Holger所说,XmlSerializer首先将XML转换为自定义类。如果您需要将节点添加到现有的XML文件中,最好使用XmlDocument。这看起来像是相关的解决方案吗?@pavel我目前使用linq的方式感觉有点硬编码,我正在寻找使用Serializer的解决方案。您无法附加到XML文件并获得“格式良好”的XML。“格式良好”的xml在根级别只有一个节点。要附加到xml并获得“格式良好”的xml,需要删除关闭节点。使用XMLLINQ允许添加到Xml的中间(而不是追加)。我不知道为什么您认为LINQXML解决方案是“硬编码的”。与硬编码类没有太大区别。