【发布时间】:2013-06-25 23:15:52
【问题描述】:
我有以下 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>
我知道这是通过使用 new XmlSerializer(typeof(DataTable)).Serialize(writer, (DataTable)myDataTable); 序列化 DataTable 创建的。
架构和实际数据可能不同。
我需要反序列化它,并尝试了以下方法:
reader.ReadStartElement("NewDataSet");
var dataSet = (DataTable)new XmlSerializer(typeof(DataTable)).Deserialize(reader);
reader.ReadEndElement();
还有:
reader.ReadStartElement("NewDataSet");
var dataSet = (DataSet)new XmlSerializer(typeof(DataSet)).Deserialize(reader);
reader.ReadEndElement();
我得到的只是
System.InvalidOperationException 未处理 Message=XML 文档中存在错误 (26, 14)。 Source=System.Xml
内部异常:
“http://www.w3.org/2001/XMLSchema'> 不是预期的。”
我怎样才能反序列化那个东西?
【问题讨论】:
-
我认为问题是因为你已经调用了 reader.ReadStartElement,尝试初始化 reader 并将其直接传递给 XmlSerializer
-
你能写一个示例代码吗?
标签: c# wpf xml serialization datatable