【发布时间】:2011-07-27 19:45:57
【问题描述】:
我正在编写一个应该将 DataSet 转换为 XML 的 WebService。我的数据集实际上是带有类别的酒店列表。每个酒店可以属于一个或多个类别。 我遵循了来自 HERE 的示例,它运行良好,但没有得到我想要的结果。
这是我得到的:(示例 1)
<hotels>
<hotel>
<name>Hilton Resort</name>
<category>
<catname>Hotel</catname>
</category>
<category>
<catname>Resort</catname>
</category>
<category>
<catname>Golf & Spa</catname>
</category>
</hotel>
<hotel>
<name>Hyatt</name>
<category>
<catname>Resort</catname>
</category>
<category>
<catname>Golf & Spa</catname>
</category>
</hotel>
</hotel>
但是,我想得到这样的东西:(示例 2)
<hotels>
<hotel>
<name>Hilton Resort</name>
<categories>
<catname>Hotel</catname>
<catname>Resort</catname>
<catname>Golf & Spa</catname>
</categories>
</hotel>
<hotel>
<name>Hyatt</name>
<categories>
<catname>Hotel</catname>
<catname>Golf & Spa</catname>
</categories>
</hotel>
</hotel>
这是我当前生成 XML 的代码,如示例 1 所示:
...
...
SqlDataAdapter hotelDA = new SqlDataAdapter(SQLHotels, SQLConn);
SqlDataAdapter catDA = new SqlDataAdapter(SQLCats, SQLConn);
DataSet ds = new DataSet("Hotels");
hotelDA.Fill(ds, "Hotel");
catDA.Fill(ds, "Category");
DataRelation SleepRel = ds.Relations.Add("Hotel",
ds.Tables["Sleep"].Columns["Id"],
ds.Tables["Category"].Columns["AccID"]);
SleepRel.Nested = true;
SQLConn.Close();
return ds;
SQLHotels - 选择所有酒店的 SQL SELECT 语句
SQLCats - 选择所有类别的 SQL SELECT 语句
Id -酒店 ID
AccId - 表 Category 中的酒店 ID(外键)
我的问题:
1) 这真的重要吗?一种结构比另一种更好吗?
2)是否可以在 DataSet 中的两个表之间建立关系,所以我得到的输出就像在第二个(所需的)XML 示例中一样。
【问题讨论】:
标签: c# xml web-services dataset nested