【问题标题】:How to save class objects to XML in c#如何在 C# 中将类对象保存到 XML
【发布时间】:2017-12-09 14:25:49
【问题描述】:

我有一个类,我需要将这个类保存到一个 XML 文件中。由于我有更多来自此类的对象,因此我需要将每个对象都添加到同一个根目录下。

我从 xml 文件开始:

<?xml version="1.0" encoding="utf-8"?>
<root>
</root>

我的班级是这样的:

class Save
{
 string a;
 string b;
 List<subClass> L1;
 List<subClass> L2;


 subClass 
 {
  string c;
  double d;
 }
}

保存后的xml文件应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<root>
 <object>
  <Element1>a</Element1>
  <Element2>b</Element2>
  <objectListL1>
   <Element3>c</Element3>
   <Element4>d</Element4>
  </objectListL1>
  ...
  <objectListL2>
   <Element3>c</Element3>
   <Element4>d</Element4>
  </objectListL2>
  ...
 </object>
</root>

当然,objectListL1 和 objectListL2 的重复频率与在列表中找到条目的频率一样高。我只想创建一个类,用我的所有数据填充它,而不是 class.Save(),它应该向我的 XMLfile 添加一个新的对象条目。

【问题讨论】:

标签: c# xml list class


【解决方案1】:

我想我找到了一个简单的解决方案:

XmlSerializer serializer = new XmlSerializer(typeof(CLASSNAME));
            StreamWriter sw = File.AppendText(FILEPATH);
            using (sw)
            {
                serializer.Serialize(sw, OBJECT);
            }

这将创建一个文件 FILEPATH 并将所有内容序列化到其中。因为它与“AppendText”一起使用,它可以与列表对象一起使用!

如果不需要追加,可以使用 Streamwriter 代替:

using (TextWriter writer = new StreamWriter(FILEPATH))

【讨论】:

  • 如果文件不为空,那么因为AppendText会向文件中添加数据。那么如何读出它们呢?请改用Create*Open* 方法。使用new StreamWriternew FileStream 也是很好的解决方案。
猜你喜欢
  • 2016-09-05
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多