使用嵌套表将数据集写入 xml

Writing dataset to xml with nested tables

我的代码中存在一个名为 dsetDataManager 的数据集 class。 我将在这个问题中引用两个 table:DataConfigDataTable、SpecEquationDataTable。

DataConfig 是父项 table,SpecEquation 是子项 table。

这是我现有的代码:

    Dim dset As New dsetDataManager
    Dim dataconfig As New dsetDataManager.DataConfigDataTable
    dataconfig.AddDataConfigRow(name,
                      name,
                      precision,
                      "smartmethodname",
                      "stringevalstring",
                      True,
                      "passingstring",
                      "passingstringinclusion",
                      "0",
                      "datacolumntype",
                      True,
                      True,
                      "networkanalyzertraces",
                      "spectrumanalyzertraces",
                      "noisefiguretraces",
                      0.5,
                      "parser")
  dset.Tables.Add(dataconfig)

  Dim specequation As New dsetDataManager.SpecEquationDataTable
  specequation.AddSpecEquationRow(dataconfig.Rows(0),
                                      j + 1,
                                      k + 1,
                                      arr_minEquation(equationCounter),
                                      arr_maxEquation(equationCounter),
                                      "Inclusive",
                                      "Inclusive")
   dset.WriteXML("example\path\test.xml")

这些方法和 table 都是自定义的,因此请假设此代码有效且创建正确。正如他们最肯定的那样。我的问题:

当我编写 XML 时,系统会提供两个单独的 table,一个带有开始标记的数据配置 table,然后是行,然后是结束标记。然后是带有开始标记、行和结束标记的规范 table。

我真正想要的是 xml 中嵌套的 table。我希望 specequation table 位于数据配置 table 的结束标记内。关于如何做到这一点的任何提示?我认为 .merge() 方法会起作用,但我收到 'object reference is not set to instance of an object' 异常。

现有 XML:

我想要什么:

再次重申,parent/child 关系已经存在于这些 table 之间。我的程序的目的是自动生成有用的 xml 文件,其中包含代表这些 table 的数据。这种嵌套的发生绝对是至关重要的。谢谢!

您可以使用 DataRelation 在两个表之间添加关系。 这就需要在link两个

中添加一个字段

然后您可以将 DataRelation 设置为 Nested = True。例如

Dim rel As DataRelation = dSet.Relations.Add("relHeader", dSet.Tables("DataConfig").Columns("Link"), dSet.Tables("SpecEquation").Columns("Link"))
rel.Nested = True

最后隐藏列:

datatable.Columns("Link").ColumnMapping = MappingType.Hidden