我得到一个具有不同内容的文件(目前有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
等也是如此。。。
有没有更优雅的方法来解析类?
我可以给所有类提供相同的基类,尽管它们的形式非常不同。
我用XmlSerializer.CanDeserialize(XmlReader)
解决了这个问题
using (var reader = XmlReader.Create(stream))
{
foreach (var type in types)
{
var serializer = new XmlSerializer(type);
if (serializer.CanDeserialize(reader))
{
return serializer.Deserialize(reader);
}
}
throw new XmlException("Invalid xml type");
}