从XML文档加载类型化数据集

时间:2010-02-26 00:47:59

标签: .net xml dataset strongly-typed-dataset

我无法填写输入的数据集

Using reader as New StringReader(My.Resources.sampledata)
  typedDataset.ReadXML(reader)
  'typedDataset.WriteXML("c:\data.xml")
End Using

以上不起作用。如果我启用注释行将结果写入文件,我将获得带有

的1K文件
<?xml version="1.0" standalone="yes"?>
<testSchema xmlns="http://tempuri.org/TestSchema.xsd" />

如果我创建一个空白数据集,请使用

Dim data as New DataSet
    Using reader as New StringReader(My.Resources.sampledata)
  data.ReadXML(reader)
  'data.WriteXML("c:\data.xml")
End Using

它将数据写入文件。这意味着数据集是从XML加载的。 XML是从有效数据集

创建的
Dim ds as DataSet = Service.GetData(params)
ds.WriteXML(C:\sampledata.xml")

然后存储在Resources文件中。

我也尝试了选项

1. Auto
2. ReadSchema
3. IgnoreSchema
4. InferSchema

使用“InferSchema”,我能够添加XML,但它创建了第二个表。

我想要做的就是从XML文档中加载我的Typed Dataset,这是从dataset.WriteXML()创建的

由于

2 个答案:

答案 0 :(得分:3)

解决方案

Dim ds As New DataSet
Using reader As New System.IO.StringReader(My.Resources.sampledata)
      ds.ReadXml(reader)
      typedDS.Load(ds.Tables(0).CreateDataReader(),
                   LoadOption.OverwriteChanges,
                   typedDS.MyTable)

End Using

答案 1 :(得分:0)

您必须使用包含的架构进行编写。

ds.WriteXml("TEST.xml", XmlWriteMode.WriteSchema);

编辑:

ds.Tables[0].WriteXml("TEST.xml", XmlWriteMode.WriteSchema);
ds.Tables[0].ReadXml("TEST.xml");

或强类型数据表读/写

typedDataset.tableName.WriteXml("TEST.xml", XmlWriteMode.WriteSchema);
typedDataset.tableName.ReadXml("TEST.xml");