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