鉴于 XML: ?xml version="1.0" encoding="UTF-8"?Response Version="3" Status StatusCode="Test"Some Value/Status/Response 构造Status类的正确方法是什么,以便System.Xml.Serialization.XmlSerializer能够正确地将给定的XML解析
<?xml version="1.0" encoding="UTF-8"?> <Response Version="3"> <Status StatusCode="Test">Some Value</Status> </Response>
构造Status类的正确方法是什么,以便System.Xml.Serialization.XmlSerializer能够正确地将给定的XML解析为状态类?
我目前正在从第三方接收这种XML结构,他们不可能改变格式.
我在响应类中的尝试看起来像:
<XmlRoot(ElementName:="Response")> Public Class clsResponse <XmlAttribute(AttributeName:="Version"), DefaultValue(0)> Public Property intVersion() As Integer <XmlElement(ElementName:="Status", Type:=GetType(clsStatus), Order:=2)> Public Property strStatus() As clsStatus End Class
和状态类:
<XmlRoot(ElementName:="Status")> Public Class clsStatus <XmlAttribute(AttributeName:="StatusCode")> Public Property strStatusCode() As String <XmlElement(ElementName:="Status", Order:=1)> Public Property strStatus() As String End Class
不幸的是,这导致strStatus始终为空.我在网上找到的所有示例都没有< Status>中的字符串值.节点,总有子节点构成等同于< Status>的内容.节点.
注意:我已经从XML和代码中删除了一堆东西,试图只包含相关的部分.如果我减少了太多请告诉我,我将提供任何其他所需的信息.
您需要为Status元素添加另一个类,因为它包含多个成员.Public Class Response <XmlAttribute> Public Version As Integer Public Status As Status End Class Public Class Status <XmlAttribute> Public StatusCode As String <XmlText> Public Text As String End Class
您可以根据需要使用属性以及重命名成员,并使用xml属性中的输出名称对它们进行装饰.