使用标记

时间:2017-12-18 16:33:16

标签: .net xml vb.net serialization datacontractserializer

我目前正在与外部公司进行集成,并且使用序列化为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结构的搜索术语的任何资源或帮助都将受到赞赏。

1 个答案:

答案 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

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>