【发布时间】:2014-07-10 08:15:59
【问题描述】:
我正在使用XmlSerializer 做一些序列化工作。我想知道是否可以从 XmlDocuement“一般”反序列化。
具体:如果我有一个 XML 文件,我会观察标签并将其与我的 DTO 模型进行比较。这可能吗(更好:.NET 支持吗?)?也许使用 XSD 文件之类的?
示例(没有通用反序列化):
XmlDocument myDocument = new XmlDocument();
myDocument.Load(xml);
MemoryStream stream = new MemoryStream();
myDocument.Save(stream);
// Here I would like to use an interface instead and load the correct type of object.
XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
MyClass myObject;
serializer.Serialize(stream, myObject);
【问题讨论】:
-
澄清一下,您想映射一个与您的 DTO 不完全对齐的 XML?
-
抱歉不清楚。我想将 XML 映射到我完全对齐的 DTO。但我正在加载不同类型的 XML 文件。然后我必须检查 XmlDocument 中定义对象类型的标记。是否可以使用通用方法解决此问题。如果我使用接口反序列化对象。
-
您也许可以使用动态对象来读取您的 xml,然后在您的 dto 上使用反射来做您想做的事情。 This 是开始的地方
-
一个类文件中有很多 XML?我会说使用
XDocument并为每种文件类型编写一个解析器。至少对一个文档的微小更改不会影响其他文档。 -
我不想将大量 XML 反序列化到一个类文件中。我想在反序列化时使用 XSD 来使用正确的类,而不必先解析标签。我正在尝试删除我的应用程序中的所有 XML-Parsing 并让 .NET Framework 处理它,如果可能的话。
标签: c# .net xml serialization