算法 - 从结构创建xml

问题描述:

我在我的数据库中有两个表 - 分类和食物。食物有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

您可以从具有所需结构的对象序列化它;但你首先必须创建你的对象。

请参阅: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

您最好生成一个XML文档并尝试获取字节信息以便将其转换为字符串。否则不仅费时,而且容易出错。

+0

好吧,如何从这个产生xml文件? – 2012-03-15 16:52:53