这是我成功创建 XML 的代码:
XDocument xdoc = new XDocument();
XElement root = new XElement("tree");
root.Add(new XAttribute("id", 0));
xdoc.Add(root);
new BuildFoldersTree(root, db);
var items = (from x in db.Items orderby x.name select new { x.name, x.id, x.parent }).ToList();
foreach (var p in items)
{
XElement e = new XElement("item",
new XAttribute("text", p.name),
new XAttribute("id", p.id),
new XAttribute("parentId", p.parent));
XElement parent = root.XPathSelectElement(String.Format("//*[@id=\"FOLDER_{0}\"] ", p.parent.ToString()));
if (parent != null) parent.Add(e);
}
和:
public void BuildFoldersTree(XElement root, MyEntities db)
{
List<Folder> folders = (from x in db.Folders orderby x.parent select x).ToList();
for (int i = 0; i < folders.Count; i++)
{
int f_id = folders[i].parent;
Folder folder = folders[i];
XElement e = new XElement("item",
new XAttribute("text", folder.name),
new XAttribute("id", "FOLDER_" + folder.id.ToString()),
new XAttribute("parentId", folder.parent));
if (folder.parent == 0)
{
root.Add(e);
}
else
{
XElement parent = root.XPathSelectElement(String.Format("//*[@id=\"FOLDER_{0}\"] ", folder.parent.ToString()));
parent.Add(e);
}
}
}
这就是那里发生的事情:我的数据库中有两个表。一个用于文件夹,一个用于项目。每个项目都有一个父文件夹。该项目有一个“父”列,它是整数,表示文件夹 ID。但是,每个文件夹也有一个父文件夹。该文件夹有一个名为“parent”的列,它是整数,表示另一个文件夹的 id。
使用该代码,我正在创建一个带有文件夹的 xml 树,然后将项目添加到正确的文件夹中。
前面的代码有效。
现在,我需要为 Json 制定相同的算法。所以,它不会使用 Xml,它应该创建一个 Json 树。
我不知道如何开始。我应该使用什么?
以下是结果 xml 的示例:
<tree id="0">
<item text="Folder_name" id="FOLDER_1" parentId="0">
<item text="Other folder name" id="FOLDER_96" parentId="1">
<item text="Third folder name" id="FOLDER_127" parentId="96">
<item text="New folder" id="FOLDER_147" parentId="127" />
<item text="item name" id="959" parentId="147" />
<item text="item name sdgdfh" id="1152" parentId="147" />
</item>
</item>
</item>
</tree>