我给出以下内容:
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 模式中定义了许多不同的类型。
还有其他选择吗?