我目前正在与外部公司进行集成,并且使用序列化为XML字符串的对象完成交互。我给出的示例和外部服务的响应包括标签内部具有属性的XML标签。
即:
<?xml version="1.0" encoding="UTF-8"?>
<Response Version="3">
<Status StatusCode="OK"></Status>
</Response>
我正在期待&#34;好的&#34;成为&#34;状态&#34;之间的价值标签,以便它将被反序列化为结果对象上的字符串值,但&#34;状态&#34;字段最后是一个空字符串,我假设因为标签在技术上是空的。
我目前正在尝试使用DataContractSerializer
,因为它最适合给出其他一些单独的要求,但我不确定如何处理像#34; Status&#34;例。
DataContractSerializer
是否能够反序列化&#34;状态&#34;以当前形式标记?如果没有,应该使用什么类型的序列化程序来适应这种情况?
此外,对于调用此XML结构的搜索术语的任何资源或帮助都将受到赞赏。
答案 0 :(得分:0)
您可以序列化到这些类
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>