c# - 只序列化xml文件的一部分并保存

标签 c# xml-serialization

我对 XML 序列化有疑问。我将尝试用以下示例 xml 文件来解释它

<AutoExpo>
  <Details>
    <Venue>XYZ</Venue>
    <StartTime>09:00</StartTime>
    <EndTime>21:00</EndTime>
  </Details>

  <Cars>
      <Car>
        <Company>Chevrolet</Company>
        <Model>Cruz</Model>
        <Color>Red</Color>
      </Car>

      <Car>
        <Company>Ford</Company>
        <Model>Fiesta</Model>
        <Color>Blue</Color>
      </Car>

  </Cars>
</AutoExpo>

现在,当我读取这个 xml 文件时,我将汽车反序列化为对象。汽车 list 可能很大。我的代码使用这个对象并且可以改变一些汽车的属性。现在,如果我只想序列化那些属性已更改的汽车对象,返回到 xml 文件并保存它,以便下次我的代码启动时,它会获得最新的状态信息。

最佳答案

在 XML 文件中到处跳转更改属性是非常困难的,无论它们在哪里更改。您应该只将整个文件读入内存,然后在保存时写出整个文件,覆盖旧文件。

XML 并不是执行此操作的糟糕方法,但据我从问题中可以看出,SQL Server(或其他 RDBMS)数据库会更合适。您不必担心此类问题,因为数据库引擎会为您完成。

关于c# - 只序列化xml文件的一部分并保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10737782/

相关文章:

c# - ASP.NET Web API 自定义发布操作不起作用

c# - XmlSerializer 使用逗号(,)十进制符号反序列化十进制

c# - 可以使用 XmlAttributes 有选择地 XmlIgnore 吗?

c# - 查询包 - MySQL

c# - 如何在将 ItemsSource 绑定(bind)到列表的 TabControl 中获取 TabItems?

c# - .NET 4.x 有重大更改 : Release mode does NOT execute static initializers properly if first call is to default ctor during deserialization

java - JAXB:如何在解码 XML 文档期间忽略命名空间?

c# - 将对象 c# 序列化为 soap 请求

Page_Load 中的 C# 将代码放在 <html> 之上

c# - 异步复制文件时得到 `Cannot access a closed file`