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

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

如果根元素是“applicator response”或“cancellation response”,我希望反序列化程序使用此类。
<XmlRoot(ElementName:="applicant-response")>
<XmlRoot(ElementName:="cancellation-response")>
Public Class ApplicantResponse
    ' properties go here!
End Class

这可能吗?
当前的Visual Studio使用上述方法投诉:
不能多次应用属性“xmlrootattribute”。
谢谢您。

最佳答案

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

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

其中myrootname是“申请人回复”或“取消回复”。

关于xml - 指定超过1个Xml Root属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48319634/

10-09 05:44