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

时间:2013-10-17 16:18:27

标签: c# xml serialization xmlwriter

我遇到了无法将序列化对象写入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 - 请帮助。

1 个答案:

答案 0 :(得分: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);
}