如何构造一个 class 以在同一个 XML 节点中输出一个属性和一个简单的字符串
How to structure a class to output an attribute and a simple string in the same XML node
鉴于 XML:
<?xml version="1.0" encoding="UTF-8"?>
<Response Version="3">
<Status StatusCode="Test">Some Value</Status>
</Response>
构造状态 class 以便 System.Xml.Serialization.XmlSerializer
将给定 XML 正确解析为状态 class 的正确方法是什么?
我目前从第三方收到 XML 这种结构,他们不可能更改格式。
我对响应的尝试 class 看起来像:
<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
状态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 元素添加另一个 class,因为它包含多个成员。
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 属性中的输出名称装饰它们。
鉴于 XML:
<?xml version="1.0" encoding="UTF-8"?>
<Response Version="3">
<Status StatusCode="Test">Some Value</Status>
</Response>
构造状态 class 以便 System.Xml.Serialization.XmlSerializer
将给定 XML 正确解析为状态 class 的正确方法是什么?
我目前从第三方收到 XML 这种结构,他们不可能更改格式。
我对响应的尝试 class 看起来像:
<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
状态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 元素添加另一个 class,因为它包含多个成员。
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 属性中的输出名称装饰它们。