c# - 算法 - 从结构创建 xml

标签 c# algorithm

我的数据库中有两个表 - Category 和 Food。食物有 idCategory。类别有 id 和 idParentCategory。

从他们那里,我需要创建一个看起来像这样(或 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 的类别,然后搜索它的所有子项,但它非常复杂。有没有简单的方法?

一个类别可以有多个类别,但他们的 child 只能有食物。

最佳答案

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

参见: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;

关于c# - 算法 - 从结构创建 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9724314/

相关文章:

c# - 多线程运行时在哪里调用Control.Invoke/BeginInvoke?

c# - 如何以编程方式获取 log4net 日志文件的名称模式?

c# - 使用 Entity Framework 6.1.3 进行异步分页

java - 将均匀随机生成转换为二项式

c - 在 C 中为字符串数组实现快速排序 - 为什么我会收到 SIGABRT 错误?

c# - 按列名字符串对列表进行排序

c# - DataContract 不会反序列化 Id DataMember

algorithm - 判断字符串中是否有字符恰好出现K次

c++ - 哪个更快? "vector of structs"还是 "a number of vectors"?

c++ - 从 0 到 10^18 的数字总和,模数为 10^9+7