Десериализация набора данных для выпуска объекта - vb. net - PullRequest
0 голосов
/ 10 февраля 2020

Привет всем. У меня возникли проблемы с десериализацией набора данных (с родительской таблицей) в соответствующий объект. Каждая таблица имеет объект массива внутри своего родительского объекта для десериализации, каждый массив имеет значение по умолчанию {}, но если в родительской таблице нет строк, внутренний объект не имеет значения, не пустой массив ... как я могу исправить эту проблему?!?

Большое спасибо всем.

VB. Net код:

Public Function DeserializeDataSetToObj(ByRef DataSetIn As DataSet, ByVal t As Type) As Object
        Dim obj As Object = Nothing
        Dim stream As MemoryStream = New MemoryStream()

        Using writer As XmlWriter = XmlWriter.Create(stream)
            DataSetIn.WriteXml(writer)
        End Using

        stream.Seek(0, SeekOrigin.Begin)

        Using reader As XmlReader = XmlReader.Create(stream)
            Try
                Dim xmlSer As System.Xml.Serialization.XmlSerializer = New System.Xml.Serialization.XmlSerializer(t)
                obj = xmlSer.Deserialize(reader)
            Catch ex As Exception

            End Try
        End Using

        Return obj
    End Function

Класс объектов

<Serializable(), XmlRoot("MainDataset"), XmlType("MainDataset")>
Public Class MainDataset

        <XmlElement("Header1")>
        Public Property Header1() as HeaderType

        <XmlElement("Header2")>
        Public Property Header2() as HeaderType
End Class

<Serializable()>
Public Class HeaderType

        <XmlElement("Rows")>
        Public Property Rows() as RowType
End Class

<Serializable()>
Public Class RowType

        <XmlElement("ColumnA")>
        Public Property ColumnA as String

        <XmlElement("ColumnB")>
        Public Property ColumnB as String

        <XmlElement("ColumnC")>
        Public Property ColumnC as String
End Class

XSD:

<?xml version="1.0" standalone="yes"?>
<xs:schema id="MainDataset" xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element msdata:UseCurrentLocale="true" name="MainDataset">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Header1">          
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Rows">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element minOccurs="0" name="ColumnA" type="xs:string"/>
                                        <xs:element minOccurs="0" name="ColumnB" type="xs:string"/>
                                        <xs:element minOccurs="0" name="ColumnC" type="xs:string"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>

                <xs:element name="Header2">          
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Rows">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element minOccurs="0" name="ColumnA" type="xs:string"/>
                                        <xs:element minOccurs="0" name="ColumnB" type="xs:string"/>
                                        <xs:element minOccurs="0" name="ColumnC" type="xs:string"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

1 Ответ

0 голосов
/ 14 февраля 2020

Проблема решена ... если я использую список вместо массива, я получаю пустой список, а не объект ничто. Спасибо всем

...