2012-03-15 16 views
0

私のデータベースには2つのテーブルがあります - カテゴリーとフード。食べ物には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のカテゴリを見つけようとしたが、そのすべての子を検索しましたが、それは非常に複雑です。簡単な方法はありますか?

1つのカテゴリは多くのカテゴリを持つことができますが、その子供は食べ物のみを持つことができます。

+0

を、あなたは、データを結合し、SQL文を書き込み、その後、ちょうどあなたの文字列にすべての結果をダンプしようとしたことがありますか? – jzworkman

+0

あなたは "これ(XMLではなく文字列)のように見える"ことを望みますが、あなたが表示するものはXMLです。あなたが望むものを示してみませんか?あなたの3番目のテーブルはどこですか?テーブル間の関係は何ですか? –

+0

@jzworkman私はテーブルに加わるLinqを書いていますが、何が良いのですか? –

答えて

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ファイルをシリアライズする方法はわかりません。 –

+0

問題は、XMLを作成しないで、2つのテーブルからオブジェクトと階層を作成することですか? – Bob2Chiv

+0

問題は、質問のようにXmlを作成しています。 –

0

XML文書を生成し、文字列に変換するためにバイト情報を取得する方がよいでしょう。そうしないと、時間がかかるだけでなく、エラーが発生しやすくなります。

+0

[OK]を、これからXMLファイルを生成する方法? –

関連する問題