在我的应用程序中,生成大量数据,然后使用XmlDocument将其写入XML文件。 机制工作正常,但是当我调用一次又一次地序列化以在新XML中写入数据的函数时,它将先前写入的内容复制到新XML以及新数据中!
我不明白,我在序列化函数的开始时调用XmlDocument doc = new XmlDocument()...
private static Boolean SaveParsedDataAsXML(ParsedData DataParsed, String Name)
{
try
{
XmlDocument doc = new XmlDocument();
XmlNode xmlnode = doc.CreateNode(XmlNodeType.XmlDeclaration, "", "");
doc.AppendChild(xmlnode);
XmlElement generalVariables = doc.CreateElement("Variables");
generalVariables.AppendChild(SerializeElement(doc, "Path", DataParsed.Path));
.
.
.
XmlElement chatMessages = doc.CreateElement("ChatMessages");
foreach (Message mess in DataParsed.ChatMessages)
{
XmlElement singleMess = doc.CreateElement("SingleMessage");
singleMess.AppendChild(SerializeElement(doc, "MessageID", mess.MessageID.ToString()));
singleMess.AppendChild(SerializeElement(doc, "MessageName", mess.MessageName));
singleMess.AppendChild(SerializeElement(doc, "MessageTime", mess.MessageTime.ToString()));
singleMess.AppendChild(SerializeElement(doc, "MessageContent", mess.MessageContent));
singleMess.AppendChild(SerializeElement(doc, "MessageTarget", mess.MessageTarget.ToString()));
chatMessages.AppendChild(singleMess);
}
generalVariables.AppendChild(chatMessages);
.
.
.
doc.AppendChild(generalVariables);
//Saving and returning true, serialization successful.
doc.Save(OutputPath + "\\" + ReplayName + ".xml");
return true;
}
catch
{
return false;
}
}
答案 0 :(得分:0)
我的假设是,在将DataParsed.ChatMessages对象传递给您发布的函数之前,您不会清除它。
您确定每次都使用新的DataParsed对象吗?或者您是否正在重复使用相同的实例并向其添加更多消息?