小编Jan*_*Rou的帖子

如何在给定 XSD 的情况下在 C# 中进行多态反序列化?

我给出以下内容:

1) XML 架构、XSD 文件,使用 XSD.EXE 工具编译为 C# 类。

2) RabbitMQ 消息队列,包含 XML 格式中定义的任何类型的格式良好的消息。以下是不同消息的两个片段:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<UserReport xmlns=".../v5.1"; ... >
    ... User report message content... 
</UserReport>

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CaptureReport xmlns=".../v5.1"; ...>
    ... Capture report message content... 
</CaptureReport>
Run Code Online (Sandbox Code Playgroud)

3) 当类型已知时,有使用 XmlSerializer .Net 类进行反序列化的经验。

问题是当类型未知时如何将消息从 XML 反序列化为对象。无法实例化 XmlSerializer,因为类型未知。

一种方法是循环遍历所有可能的类型,直到反序列化成功,这是一个不好的解决方案,因为 XML 模式中定义了许多不同的类型。

还有其他选择吗?

c# polymorphism serialization xsd

2
推荐指数
1
解决办法
1239
查看次数

标签 统计

c# ×1

polymorphism ×1

serialization ×1

xsd ×1