0

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

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

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

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

(传入对象类型Node的List)

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 - 请帮助。

4

1 回答 1

0

如果您不介意每次编写整个文件,您可以执行以下操作:

[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);
}
于 2013-10-17T16:45:35.200 回答