【发布时间】:2016-01-23 07:40:41
【问题描述】:
我正在尝试将(马)对象转换为 XmlElement,以便可以将其附加到 XML 文件中。这是我最近尝试过的。
// create writer and serializer to add horse to xml
var stringwriter = new StringWriter();
var serializer = new XmlSerializer(horse.GetType());
// serialize horse object to xml
serializer.Serialize(stringwriter, horse);
var xmlStr = stringwriter.ToString();
// format string to xml
var horseXml = new XmlDocument();
horseXml.LoadXml(xmlStr);
// get horse element from horseXml
var horseEl = horseXml.ChildNodes[0];
// assign xmldb to xml document
var xmlDb = new XmlDocument();
xmlDb.Load(xmlDbFilepath);
XmlNode root = xmlDb.DocumentElement;
// add horseEl to root of xmlDb
root.AppendChild(horseEl);
xmlDb.Save(xmlDbFilepath);
不幸的是,一旦我到达 root.AppendChild(horseEl) 行,这将引发以下异常:“System.Xml.dll 中发生‘System.ArgumentException’类型的异常,但未在用户代码中处理附加信息:要插入的节点来自不同的文档上下文。”
任何建议将不胜感激!
编辑:这是一个显示 my horse class and xmldb 的链接。
【问题讨论】:
-
请包含
horse的类定义和文件xmlDbFilepath的内容。 -
马类不完整。请添加子类和枚举的定义。
-
啊,不错。对于那个很抱歉。我刚刚用另一个更新了要点。我应该提到,xml 文件最初是通过序列化 List
创建的。这是我用于此的代码: XmlSerializer x = new XmlSerializer(horses.GetType()); var stream = new FileStream(xmlDbFilepath, FileMode.Create); x.Serialize(stream, horses); stream.Close(); -
你试过谷歌错误信息时得到的建议吗?
标签: c# asp.net xml xml-serialization