【问题标题】:C# XMLdocument writing same thing over againC# XMLdocument 再次编写相同的东西
【发布时间】:2011-04-06 07:35:49
【问题描述】:

在我的应用程序中,生成了大量数据,然后使用 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;
            }
        }

【问题讨论】:

    标签: c# xml


    【解决方案1】:

    我的假设是您在将 DataParsed.ChatMessages 对象传递给您发布的函数之前没有清除它。

    您确定每次都使用新的 DataParsed 对象吗?或者您是否在重复使用同一个实例并向其附加更多消息?

    【讨论】:

    • 是的,ParsedData dataParsed = new ParsedData(); dataParsed = parserApe.ParseReplay(replayFilePath);
    • 是解析数据的内部函数没有创建 ParsedData 的新实例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 2022-01-18
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    相关资源
    最近更新 更多