如何构造一个 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 属性中的输出名称装饰它们。