【问题标题】:Conditionally Serialize XML in C# Based on Attribute在 C# 中基于属性有条件地序列化 XML
【发布时间】:2014-04-15 15:14:42
【问题描述】:

我有一个需要序列化为 C# 对象的 XML 文件。通常,XML 标签指示文件被序列化到哪个对象中。但是,我必须处理的文件之一使用 XML 标记中称为 type 的属性来指定对象。例如,看下面的代码。

<library>
  <item type="book">Great Expectations</item>
  <item type="magazine">National Geographic</item>
  <item type="cd">Blue Valentines</item>
</library>

是否可以使用 XML 序列化属性,使得每个项目都将序列化为类型由 XML 中的 type 属性指定的对象,即 Great Expectations 将序列化为书籍对象等?

在此先感谢

【问题讨论】:

  • 在这里为 book/magazine/cd 使用单独的对象字节而不是仅使用具有 Type 属性的 Item 对象是否有意义?您的实际文档是否有更多字段或其他内容?
  • 当然可以手动编写一个 XML 序列化器来读取属性并执行正确的序列化。然而,这是很多工作。实际上,编写一个 XSLT 将 XML 转换为一种将每个项目包装成适当类型的表单实际上可能更容易(只是有点开玩笑)。

标签: c# xml serialization


【解决方案1】:

查看另一个 StackOverflow 问题:XML Deserialization - convert attribute value into class automatically (.net)

仅属性似乎不支持将数组项反序列化为特定类型。您将需要实现自定义 IXmlSerializable。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多