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>

1 つのノードOrganizationName内にネストする方法についてのアイデア。Organizationそれぞれ1つの値を持つ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 に答える