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

时间:2016-01-05 19:07:37

标签: c# .net xml serialization

我目前正在开发一个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>

现在假设我有一个包含List Human的对象。序列化此对象将花费时间和资源,并将生成一个非常大的XML文件。

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

1 个答案:

答案 0 :(得分:2)

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

  • 与文件一起生活
  • 使用多个文件
  • 使用其他一些持久性(非XML文件或数据库)

不知道你的意思有多大&#34;大&#34;或者您的性能要求是什么,很难说哪种选择最合适 - 但我强烈建议您仔细考虑具体的实际要求是什么条款,并用最简单的选项测试它们。