指定多个XmlRoot属性

时间:2018-01-18 10:56:13

标签: xml vb.net deserialization

我有一个用于存储反序列化XML数据的类。我想让这个类向后兼容,所以它接受旧的Root元素名称。

<XmlRoot(ElementName:="cancellation-response")>
Public Class ApplicantResponse
    ' properties go here!
End Class

如果根元素是“申请者 - 响应”“取消 - 响应”,我希望反序列化器使用此类。

<XmlRoot(ElementName:="applicant-response")>
<XmlRoot(ElementName:="cancellation-response")>
Public Class ApplicantResponse
    ' properties go here!
End Class

这可能吗?

当前Visual Studio使用上述方法进行投诉:

  

属性'XmlRootAttribute'不能多次应用。

谢谢。

1 个答案:

答案 0 :(得分:3)

我的解决方案是将根名称动态传递给XmlSerializer:

xmlRoot = New XmlRootAttribute(myRootName)  
serializer = New XmlSerializer(GetType(ApplicantResponse), xmlRoot) 
response = CType(serializer.DeSerialize(New StringReader(serializedResponse)), ApplicantResponse)

其中myRootName是&#34;申请人 - 回复&#34;或&#34;取消 - 回应&#34;。