1

我有以下代码片段:

        var dataSet = new DataSet("Data");
        var table = GetCustomerTable();
        var orgTable = GetOrganizationTable();
        dataSet.Tables.Add(table);
        dataSet.Tables.Add(orgTable);
        var relation = new DataRelation("CustomerMembership", dataSet.Tables["Customers"].Columns["CustomerId"], dataSet.Tables["Organizations"].Columns["CustomerId"])
                        {Nested = true};
        dataSet.Relations.Add(relation);
        dataSet.WriteXml(@"C:\MyFeed.xml");

这给了我以下结果:

<Customers>
    <CustomerId>272408857</CustomerId>
    <snip>
    <Organizations>
      <OrganizationName>Org1</OrganizationName>
    </Organizations>
    <Organizations>
      <OrganizationName>Org2</OrganizationName>
    </Organizations>
  </Customers>

我正在寻找的是这样的:

<Customers>
    <CustomerId>272408857</CustomerId>
    <snip>
    <Organizations>
      <OrganizationName>Org1</OrganizationName>
      <OrganizationName>Org2</OrganizationName>
    </Organizations>
  </Customers>

关于如何OrganizationName嵌套在一个Organization节点内的任何想法;而不是有 2 个节点,每个节点都有一个值?

4

1 回答 1

2
DataColumn dc = orgTable.Columns["OrganizationName"];
dc.ColumnMapping = MappingType.Attribute;

将此添加到您的代码中将输出以下内容:

<Customers>
    <CustomerId>272408857</CustomerId>
    <snip>
    <Organizations OrganizationName = "Org1"/>
    <Organizations OrganizationName = "Org2"/>
</Customers>

这不完全是您所需要的,但我认为您无法使用 .net 工具将连接的子节点收集到表标签中。您可能必须自己转换 xml。

您还可以将 DataTable 重命名为“Organization”,这样您将拥有一个Organization元素列表(尽管仍然缺少父Organizations元素)。

你怎么看?

于 2011-08-04T21:00:37.927 回答