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
(Version
和 StatusCode
是属性)
这是连载
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>
我目前正在与外部公司进行集成,交互是使用序列化为 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
(Version
和 StatusCode
是属性)
这是连载
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>