2010-03-17 91 views
0

我有一个包含类似以下节点的XML文档: -帮助中XPath表达式

<a class="custom">test</a> 
<a class="xyz"></a> 

我tryng以获取其类不是“自定义”的节点和我写了像下面的表达式: -

XmlNodeList nodeList = document.SelectNodes("//*[self::A[@class!='custom'] or self::a[@class!='custom']]"); 

现在,我想IMG标签,以及和我想添加以下李毅华,以及上述表达式: -

//*[self::IMG or self::img] 

...这样我就可以获得所有IMG节点以及任何标签,而不是将“自定义”作为class属性中的值。

任何帮助将不胜感激。

编辑: - 我尝试以下,这是一个无效的语法,因为这会返回一个布尔值,而不是任何节点列表: -

XmlNodeList nodeList = document.SelectNodes("//*[self::A[@class!='custom'] or self::a[@class!='custom']] && [self::IMG or self::img]"); 
+0

没有接受者? :-(我的方法错了吗? – 2010-03-17 13:39:11

+0

对于你的第一个XPath查询...我不是XPath专家,但不会''XmlNodeList nodeList = document.SelectNodes(“// a [@class ='custom'] “);'已经诀窍了吗? – 2010-03-17 13:41:42

+0

Richard,谢谢你的时间。其实第一个XPath的工作原理。我只是需要以某种方式添加第二个XPath到第一个XPath,我没有找到一种方法来做到这一点。 – 2010-03-17 13:48:31

回答

2

不知道你在问什么,但有你试过类似下面的东西?

"//A[@class!='custom'] | //a[@class!='custom'] | //IMG | //img" 
+0

这个表达式甚至没有选择不具有“自定义”作为属性值的节点,我的第一个XPath适用于这个至少。 – 2010-03-17 13:55:04

+0

我编辑它几秒钟在使用XSL工作表进行测试后发布它,在语句中使用时,它工作得很好,你能发布一个更大的XML代码片段吗? – baol 2010-03-17 13:58:19

+0

这应该工作得很好。简单的XML文档,它抓住了预期的节点秒。 – Tom 2010-03-17 14:02:39