DataTable或DataSet的XML反序列化

Ada*_*abo 2 c# xml wpf datatable serialization

我有以下XML:

     <NewDataSet>
        <xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
          <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Data" msdata:UseCurrentLocale="true">
            <xs:complexType>
              <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="Data">
                  <xs:complexType>
                    <xs:sequence>
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
              </xs:choice>
            </xs:complexType>
          </xs:element>
        </xs:schema>
     </NewDataSet>
Run Code Online (Sandbox Code Playgroud)

我知道这是通过序列化DataTable创建的new XmlSerializer(typeof(DataTable)).Serialize(writer, (DataTable)myDataTable);.

架构以及实际数据可以在其中不同.

我需要反序列化它,并尝试以下方法:

reader.ReadStartElement("NewDataSet");
var dataSet = (DataTable)new XmlSerializer(typeof(DataTable)).Deserialize(reader);
reader.ReadEndElement();
Run Code Online (Sandbox Code Playgroud)

并且:

reader.ReadStartElement("NewDataSet");
var dataSet = (DataSet)new XmlSerializer(typeof(DataSet)).Deserialize(reader);
reader.ReadEndElement();
Run Code Online (Sandbox Code Playgroud)

我得到的只是

System.InvalidOperationException未处理Message = XML文档中存在错误(26,14).来源=的System.Xml

的InnerException:

"http://www.w3.org/2001/XMLSchema">没想到."

我怎样才能反序化那个东西?

Ada*_*abo 7

管理解决它.好像当我们DataSet使用它的ReadXml()方法直接读取现有文件时,它就可以了.

var dataSet = new DataSet();
dataSet.ReadXml(reader);
Run Code Online (Sandbox Code Playgroud)

现在我可以到达桌子了 dataSet.Tables[0]