我正在嘗試實現'IXmlSerializable'接口並與'ReadXml'實現作鬥爭。這裏是我的序列化的XML:使用XmlReader並忽略節點的順序
<?xml version="1.0" encoding="utf-16"?>
<MyClass>
<IntProperty>100</IntProperty>
<BoolProperty>True</BoolProperty>
<ArrayProperty>
<ArrayEntry MyAttr="Bob" />
<ArrayEntry MyAttr="Alice" />
</ArrayProperty>
<StringProperty>Hello World!</StringProperty>
</MyClass>
有這個「小」 特殊要求的反序列化必須向後兼容到有可能有不同的訂單元素的較舊的序列化版本,是缺失的元素或者有額外的(現在未使用的)元素。我怎樣才能做到這一點?
Public Class MyClass
Implements IXmlSerializable
Public Property IntProperty As Integer
Public Property BoolProperty As Boolean
Public Property ArrayProperty As ArrayEntry()
Public Property StringProperty As String
Public Sub ReadXml(reader As System.Xml.XmlReader) Implements IXmlSerializable.ReadXml
' to be done ...
End Sub
' ...
End Class
Public Class ArrayEntry
Public Property MyAttr As String
End Class
謝謝!你能否提供一個如何解析'ArrayProperty'節點的例子,記住它可能發生在'MyClass'節點下的任何地方? – jor
鑑於您正在處理的XML結構,我們可能很難使用上面的代碼。您可以調用reader.read來獲取CASE中間的下一個元素。我不確定是否必須退出處理屬性的示例中顯示的內容。 – rheitzman
這就是爲什麼我問:-) – jor