代码之家  ›  专栏  ›  技术社区  ›  Saif Khan

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

  •  2
  • Saif Khan  · 技术社区  · 14 年前

    我无法填充类型化数据集

    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")
    

    然后存储在资源文件中。

    我也试过选择

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

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

    我只想从从从dataset.writexml()创建的XML文档中加载类型化的数据集。

    谢谢

    2 回复  |  直到 14 年前
        1
  •  3
  •   Saif Khan    14 年前

    解决方案

    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
    
        2
  •  0
  •   Patrick Kafka    14 年前

    您必须在包含模式的情况下进行编写。

    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");