【问题标题】:XML deserialization of different classes in file文件中不同类的 XML 反序列化
【发布时间】: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 等也是如此......

有没有更优雅的方式来解析类?

我可以为所有类赋予相同的基类,尽管它们的形式完全不同。

【问题讨论】:

标签: c# xml


【解决方案1】:

我用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");
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多