如果我使用 XmlWriter,那么我无法选择写入位置,Serialize() 需要一个编写器

本文关键字:一个 Serialize 位置 如果 选择 XmlWriter | 更新日期: 2023-09-27 18:36:00

我遇到了无法将序列化对象写入XML文档中特定位置的问题。

如果我有一个如下所示的 XML 文件:

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

我想将我的对象列表加载到 MapSave 标签中。我该怎么做?

(传入对象类型节点的列表)

XmlSerializer ser = new XmlSerializer(typeof(List<Node>));
XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = true;
    settings.NewLineOnAttributes = true;
string fileName = Application.dataPath + "/Saves/Save" + GameVariables.saveFile + ".xml";
using (XmlWriter writer = XmlWriter.Create(File.Open(fileName, FileMode.Open), settings))
{
    ser.Serialize(writer, list);
}

序列化所有对象并将它们写入文件没有问题。它工作正常,但我似乎没有办法专门将其写为区域内的元素。

我必须使用 XML 编写器来执行序列化,但是无法设置 XML 编写器的"在此处开始写入"位置。 到目前为止,它只是覆盖了整个文档。

(我已经做了比我相当多的研究,我知道如何在使用 XmlDocument 时设置写作位置,但不是使用 XmlWriter - 请帮忙。

如果我使用 XmlWriter,那么我无法选择写入位置,Serialize() 需要一个编写器

如果你不介意每次都写入整个文件,你可以做这样的事情:

[Serializable]
public class Spellement
{
    public Spellement() { }
    List<Node> mapSave = new List<Node>();
    public List<Node> MapSave
    {
        get { return mapSave; }
        set { mapSave = value; }
    }
}
[Serializable]
public class Node
{
    public Node() { }
    public string Text { get; set; }
}
XmlSerializer xs = new XmlSerializer(typeof(Spellement));
using (XmlWriter st = XmlWriter.Create("C:''test.xml"))
{
     xs.Serialize(st, s);
}
相关文章: