2012-12-13 127 views
4

我有以下类型的XML: -XPath来选择与排除元素(与多个子元素)

<tagCategory name="Bike" id="10"> 
    </tagCategory> 
    <tagCategory name="Cars" id="22"> 
    <excludedClass>NonDriver</excludedClass> 
    <excludedClass>BannedFromDriving</excludedClass> 
    </tagCategory> 
    <tagCategory name="PogoStick" id="5"> 
<excludedClass>NoLegs</excludedClass> 
    </tagCategory> 

我想运行查询,我可以说: -

给我所有的例如: -

  • 给我所有的其中excludedClass不是'NoLegs'应该返回汽车和自行车的tagCategory元素。
  • 给我所有的其中excludedClass不是'BannedFromDriving'的tagCategory元素应该返回Bike和PogoStick。
  • 给我所有的其中excludedClass不是'NonDriver'的tagCategory元素应该返回Bike和PogoStick。

我使用的是当前的XPath,它只处理一个排除类的元素,但其中存在多个元素时,它不会像我期望的那样过滤项目。

"//tagCategory[excludedClass!='" + classification + "' or not(excludedClass)]"

没有人有任何想法如何,我可以修改我的XPath来给我我需要什么?

真的很欣赏任何想法。

亲切的问候,

菲尔。

+0

的XPath的什么版本? –

+0

我正在使用.NET 4,因此无论在那里? –

回答

0

尝试使用类似:

//tagCategory[not(excludedClass='NonDriver')] 

例如:

//tagCategory[not(excludedClass='" + classification + "')] 
+0

大卫,事情是,我只能通过一个排除,即我知道的一个,我不知道其他人。有没有办法做到这一点? –

+0

@PhilWinstanley - 对不起......我误解了这个问题。请参阅我的编辑,看看它是否适合你。 –

+0

完美 - 谢谢你,我也必须弹出或不弹出(排除类),以满足它不存在的项目:) –