【发布时间】:2012-10-21 19:44:50
【问题描述】:
我的 XML 文件包含类似于以下内容的结构:
<root>
<Manager name="1">
<Manager name="2">
<Employee name="3">
</Manager>
<Manager name="abe">
</Manager>
<Employee name="4">
<Employee name="5">
</Manager>
</root>
XML 提供树形视图,根据用户在树形视图中单击的位置,我要么想检索所单击的员工(这很简单,因为我可以使用 treeview.SelectedNode),否则如果单击是在根节点或经理节点上,经理下的第一个员工。
即
- 单击
root应显示Employee 4的详细信息(第一个员工记录直接在Manager 1下直接在root下)。 - 单击
Manager 1也应该显示Employee 4。 - 单击
Manager 2应显示Employee 3。 - 单击
Manager Abe不会产生任何结果。 -
Employee 5仅在直接点击该员工时显示。
Manager 1 也有可能在他手下没有任何直接员工。在这种情况下,单击 root 应该会在第一个有员工的经理下产生第一个 Employee。因此,如果我们假设Employee 4 和Employee 5 不在Manager 1 之下,那么单击root 将产生Employee 3。
我尝试使用Element、Elements、Descendant 和Descendants 的一些不同变体,但有点卡住了。
我想我可以为每个单独的组合(即rootClicked、managerClicked 和employeeClicked)编写场景,这是我最初所做的,但我正在寻找一些希望更容易维护的东西,代码方面。
我非常希望使用 root.Element("Employee") 会有所帮助,但这会引发 Could not find an implementation of the query pattern for source type 'System.Xml.Linq.XEelement'. 'select' not found 错误。
谁能帮我解决我的问题所需的一点点帮助?
【问题讨论】: