У меня есть два класса, документы и класс документов. Оба имеют атрибуты. Когда я пытаюсь десериализовать класс документов, я получаю атрибут и значения элемента, но массив документов пуст. Если я десериализую документы, используя root в качестве документов, я получу правильный массив документов, но, конечно, не атрибут или элемент из документов. Есть ли какой-то моджах, которые мне не хватает в классе документов, чтобы он получал массив документов?
Public Class document
<System.Xml.Serialization.XmlAttribute("ID")>
Public ID As Integer
Public docType As String
End Class
Public Class documents
<System.Xml.Serialization.XmlAttribute("maxID")>
Public maxID As Integer
<System.Xml.Serialization.XmlArrayItem("document")>
Public docs() As document
Public docGroup As String
End Class
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim _XML As String = "
<documents maxID=""12345"">
<document ID=""33333"">
<docType>Doc1</docType>
</document>
<document ID=""44444"">
<docType>Doc2</docType>
</document>
<docGroup>Any</docGroup>
</documents>"
Dim _ms As New MemoryStream()
Dim _sw As New StreamWriter(_ms)
_sw.Write(_XML)
_sw.Flush()
_ms.Position = 0
Dim _ser1 As New System.Xml.Serialization.XmlSerializer(GetType(documents))
Dim _ser2 As New System.Xml.Serialization.XmlSerializer(GetType(document()), New System.Xml.Serialization.XmlRootAttribute("documents"))
Dim docs As documents
Dim doc() As document
Dim obj As Object
_ms.Position = 0
docs = _ser1.Deserialize(_ms) '; Gets attribute and element but no document array
_ms.Position = 0
doc = _ser2.Deserialize(_ms) ' Gets document array just fine
End Sub
End Class
Любая помощь будет принята с благодарностью.