gpt4 book ai didi

C# XmlSerializer,编辑 XML 文件而不重写整个文件

转载 作者:行者123 更新时间:2023-11-30 23:31:20 25 4
gpt4 key购买 nike

我目前正在开发一个 C# 应用程序,它必须将一些简单的对象序列化为给定的 XML 文件。

例如,这里是一个简单的示例类......假设是人类

   public class Human
{
private XmlSerializer serializer = new XmlSerializer(typeof(Human));

public string name { get; set; }
public int age { get; set; }
public string country { get; set; }

public void Serialize()
{
StreamWriter stream = null;

try
{
stream = new StreamWriter("data.xml");
serializer.Serialize(stream, this);
stream.Close();
}
catch (Exception e)
{
if (stream != null)
{
stream.Close();
}
}
}
}

如果我实例化这个类,设置一些值,并调用 Serialize() 方法,我的 data.xml 文件将如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Human xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<name>Oscar</name>
<age>20</age>
<country>France</country>
</Human>

现在假设我有一个包含 HumanList 的对象。序列化此对象需要时间和资源,并且会生成一个相当大的 XML 文件。

如果我不想编辑一个特定的人物,或者只是将一个新人物添加到我的 List,有没有办法只编辑/修改 XML 文件的一小部分?还是我必须重新序列化整个列表并替换 XML 文件内容?

最佳答案

XML 根本不是为这种操作而设计的。您的选择可能是:

  • 忍受文件很大
  • 改用多个文件
  • 改用其他一些持久性(非 XML 文件或数据库)

在不知道您所说的“大”是指多大或您的性能要求是什么的情况下,很难说这些选项中的哪一个是最合适的 - 但我强烈建议您仔细考虑您的实际 要求是具体的,并用最简单的可用选项对其进行测试。

关于C# XmlSerializer,编辑 XML 文件而不重写整个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34619414/

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