我有以下代码片段:
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个节点?
答案 0 :(得分: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
元素)。
您怎么看?