【发布时间】:2014-04-10 14:46:22
【问题描述】:
我正在编写一个与side word 一起工作并为其创建自定义菜单系统的应用程序。
我希望用户能够添加无限的子菜单。
我正在从一个制表符表示缩进的文本文件中读取。
示例文本文件:
GROUP
MENU1
SUBMENU11
SUBSUBMENU111
SUBSUBMENU1111
SUBMENU12
MENU2
SUBMENU21
SUBSUBMENU211
示例 XML 输出:
<group id="GROUP" label="GROUP">
<menu id="MENU1" label="MENU1" size="normal">
<menu id="SUBMENU11" label="SUBMENU11" size="normal" >
<menu id="SUBMENU111" label="SUBMENU111" size="normal" >
<menu id="SUBMENU1111" label="SUBMENU1111" size="normal" />
</menu>
</menu>
<menu id="SUBMENU12" label="SUBMENU12" size="normal" />
</menu>
<menu id="MENU2" label="MENU2" size="normal" >
<menu id="SUBMENU21" label="SUBMENU21" size="normal" >
<menu id="SUBMENU211" label="SUBMENU211" size="normal" />
</menu>
</menu>
</group>
目前在某些点添加,即向下 5 个标签:
path.Descendants(ns + "menu").ElementAt(currentMenuIndex)
.Descendants(ns + "menu").ElementAt(currentMenu1Index)
.Descendants(ns + "menu").ElementAt(currentMenu2Index)
.Descendants(ns + "menu").LastOrDefault()
.Add(//add node info);
我目前正在为每个选项卡案例创建这些后代树中的每一个,这会使代码变得庞大,如果可以的话,我希望能够以编程方式为无限数量的选项卡执行此操作。
如果你能对此有所了解,那就太好了,我已经转了好几天了。
【问题讨论】:
-
您的示例 XML 没有您想象的那么多级别。当 SubMenu11 自动关闭时,它不能有子。
-
废话我就是个布偶!并写出糟糕的xml!我会纠正它!
-
你能用递归函数吗?
-
你自己的代码还不错,只是索引(和 ElmentAt)的使用让它有点尴尬。 XML 对索引不友好。
标签: c# xml ms-word linq-to-xml xelement