我有一个用于存储反序列化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'不能多次应用。
谢谢。
答案 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;。