文件中不同类的XML反序列化



我得到一个具有不同内容的文件(目前有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");
}

最新更新