2012-03-15 49 views
0

我在我的數據庫中有兩個表 - 分類和食物。食物有idCategory。類別有id和idParentCategory。算法 - 從結構創建xml

從他們身上,我需要創建一個字符串,它看起來像這樣(或XML):

<?xml version="1.0"> 
<tree id="0"> 
    <item text="Category1"> 
     <item text="Food1"/> 
     <item text="Food2"/> 
    </item> 
    <item text="Category2"> 
     <item text="Category1"> 
      <item text="Food3"/> 
      <item text="Food4"/> 
     </item> 
     <item text="Category3"> 
      <item text="Food5"/> 
      <item text="Food6"/> 
     </item> 
    </item> 
</tree> 

如何建立呢?我試圖找到id == 1的類別,然後搜索它的所有子項,但它非常複雜。有沒有簡單的方法?

一個類別可以有很多類別,但他們的孩子只能有食物。

+0

您是否嘗試過寫SQL語句加入數據,然後就傾倒所有的結果到您的字符串? – jzworkman 2012-03-15 16:50:42

+0

你想要「看起來像這樣(不是xml,但是string)」,但是你展示的是XML。爲什麼不顯示你想要的?你的第三張桌子在哪裏?表格之間的關係是什麼? – 2012-03-15 16:51:25

+0

@jzworkman我寫Linq加入表,但它有什麼好處呢? – 2012-03-15 16:51:26

回答

1

您可以從具有所需結構的對象序列化它;但你首先必須創建你的對象。

請參閱:Deserializing XML to Objects in C# 如果您不知道對象結構。

一旦你擁有了它很容易序列化爲XML字符串對象:

 XmlSerializer serializer = new XmlSerializer(typeof(THEOBJECT)); 
     string THEOBJECTXMLSTRING; 

     using (var stream = new MemoryStream()) 
     { 
      serializer.Serialize(stream, THEINSTANCEOFTHEOBJECT); 
      stream.Seek(0, SeekOrigin.Begin); 
      var sr = new StreamReader(stream); 
      THEOBJECTXMLSTRING = sr.ReadToEnd(); 
     } 

     return THEOBJECTXMLSTRING; 
+0

我知道如何序列化一個XML文件。我不知道如何序列化上面的XML文件。 – 2012-03-15 17:24:06

+0

所以問題是從兩個表創建對象和層次結構,而不是創建XML? – Bob2Chiv 2012-03-15 17:29:37

+0

問題是在問題中創建Xml。 – 2012-03-15 17:32:17

0

您最好生成一個XML文檔並嘗試獲取字節信息以便將其轉換爲字符串。否則不僅費時,而且容易出錯。

+0

好吧,如何從這個產生xml文件? – 2012-03-15 16:52:53