【发布时间】:2021-05-18 17:59:12
【问题描述】:
我得到一个内容不同的文件(目前有 4 个不同的类)
<ClassA><!-- content --></ClassA>
或
<ClassB><!-- content --></ClassB>
或者...
在解析时,我没有更多信息在文件中是哪个类。
所以,目前,我尝试通过反复试验来解析:
try
{
ClassA result = (ClassA)new XmlSerializer(typeof(ClassA)).Deserialize(reader);
if(!(result is null)) { \\do something }
}
catch (Exception) {}
ClassB 等也是如此......
有没有更优雅的方式来解析类?
我可以为所有类赋予相同的基类,尽管它们的形式完全不同。
【问题讨论】:
-
蛮力?阅读第一行并寻找合适的名称?它很笨拙而且非常不雅,但它可能会解决您的问题
-
从一个共同的祖先继承你的类。使用 XmlIncludeAttribute。
-
您可以使用
XmlSerializer.CanDeserialize(XmlReader)检查给定的序列化程序是否能够反序列化给定的根元素。见How to deserialize XML if the return type could be an Error or Success object。