XML 使用标签内的属性进行序列化

XML Serialization With Properties inside Tags

我目前正在与外部公司进行集成,交互是使用序列化为 XML 字符串的对象完成的。我给出的示例和外部服务的响应包括 XML 标签,标签本身具有属性。

即:

<?xml version="1.0" encoding="UTF-8"?>
<Response Version="3">
 <Status StatusCode="OK"></Status>
</Response>

最初我期望 "OK" 是 "Status" 标签之间的值,这样它会被反序列化为结果对象上的字符串值,但 "Status" 字段正在结束作为一个空字符串,我假设是因为标签在技术上是空的。

我目前正在尝试使用 DataContractSerializer,因为它最适合其他一些单独的要求,但我不确定如何处理 "Status" 示例中的标签。

DataContractSerializer 是否能够反序列化当前形式的 "Status" 标签?如果不是,应该使用什么类型的序列化程序来适应这种情况?

此外,如果有任何资源或有关搜索此 XML 结构的术语的帮助,我们将不胜感激。

你可以序列化到这些 类

Public Class Response
    <System.Xml.Serialization.XmlElement()>
    Public Property Status As Status
    <System.Xml.Serialization.XmlAttribute()>
    Public Property Version As Integer
End Class

Public Class Status
    <System.Xml.Serialization.XmlAttribute()>
    Public Property StatusCode As String
End Class

VersionStatusCode 是属性)

这是连载

Dim s As New Xml.Serialization.XmlSerializer(GetType(Response))
Dim r As Response

' reading
Using fs As New IO.FileStream("filename.xml", IO.FileMode.Open)
    r = s.Deserialize(fs)
End Using

' writing
Using fs As New IO.FileStream("filename.xml", IO.FileMode.Truncate)
    s.Serialize(fs, r)
End Using

如果有帮助,xml 也可以这样表示,这应该清楚为什么 Status 元素本身没有字符串值。

<?xml version="1.0" encoding="UTF-8"?>
<Response Version="3">
  <Status StatusCode="OK"/>
</Response>