我正在编写一个应该将DataSet转换为XML的WebService。我的数据集实际上是具有类别的酒店列表。每家酒店可以属于一个或多个类别。 我跟着HERE的一个例子,它运作良好,除非我没有得到我想要的结果。使用嵌套元素将DataSet转换为XML
这就是我得到:(例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选择所有类别
标识 SQL SELECT语句 - - 选择所有酒店
SQLCats声明酒店ID
ACCID - 酒店ID表类别(外键)
我的问题:
1)它确实重要吗?一个结构好于另一个结构吗?
2)是否有可能在DataSet中的两个表之间建立关系,这样我得到的输出就像在第二个(所需的)XML示例中一样。
很好的解释。谢谢 – bobetko 2011-04-01 19:41:37
更多拉风格' xsl:template>' –
2011-04-07 03:54:36
是的,这显然更好。 – 2011-04-07 18:03:33