gpt4 book ai didi

c# - DataTable 或 DataSet 的 XML 反序列化

转载 作者:数据小太阳 更新时间:2023-10-29 02:51:32 34 4
gpt4 key购买 nike

我有以下 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 was unhandled Message=There is an error in XML document (26, 14). Source=System.Xml

内部异常:

"http://www.w3.org/2001/XMLSchema'> was not expected."

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

最佳答案

设法解决它。似乎当我们使用其 ReadXml() 方法直接读取现有 DataSet 时,它就可以正常工作。

var dataSet = new DataSet();
dataSet.ReadXml(reader);

现在我可以访问表作为 dataSet.Tables[0]

关于c# - DataTable 或 DataSet 的 XML 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17360342/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com