【发布时间】:2011-02-04 05:19:31
【问题描述】:
我需要使用 xpath 从 xml 节点列表中排除特定节点的帮助。 xml结构如下。 xml文件很大,大概有8000条左右,大部分是子菜单类型的。
<Menu>
<MenuId>2905</MenuId>
<Item>
<ItemId>191916</ItemId>
<ItemType>content</ItemType>
</Item>
<Item>
<ItemId>17343</ItemId>
<ItemType>submenu</ItemType>
<Menu>
...
</Menu>
</Item>
</Menu>
我需要做的是针对某个 MenuID(例如 2905)排除所有子节点,除了 ItemType = 'content' 的子节点
我认为下面的方法会起作用?
Menu[MenuId !='2905' or MenuId = '2905' and child::ItemType = 'content']/Item
不应该选择所有不在 2905 中的节点以及任何在 2905 中的内容类型的节点吗?我试过的.NET用法如下:
XmlNodeList nextLevelNodeList = currentNode.SelectNodes(string.Format("Menu[MenuId !='2905' or MenuId = '2905' and child::ItemType = 'content']/Item));
任何想法将不胜感激......
干杯 内森
【问题讨论】: