0

我试图在 SelectNodes(" ") 调用中使用 tokenize 方法来过滤掉一些东西。

我有一些类似的东西:

<nodes>
    <node colors="RED,BLUE,YELLOW"/>
</nodes>

我的xpath是这样的:

nodes/node[not(empty(tokenize("GREEN,YELLOW,PURPLE", ",") intersect tokenize(@colors, ",")))]

简单地说,我有两个逗号分隔列表,一个作为属性,一个作为属性的“过滤器”。我想选择所有节点,其中@colors某处包含"GREEN,YELLOW,PURPLE".

我以为我有那个 XPath 的解决方案,但似乎是:A:我做错了什么,或者 B:我使用的 XML DOM 文档的版本不支持tokenize()

上面的 XPath 在 SelectNodes( ) 调用中会抛出一条错误消息,说 msxml3.dll: Unknown method.",然后指向该tokenize()方法。

我尝试做 setProperty("SelectionLanguage", "XPath"),但这似乎也没有解决问题。

有什么方法可以让我执行等效的 XPath 选择,而无需求助于一堆and contains(@colors, "GREEN") and contains(@colors, "YELLOW")...

4

1 回答 1

0

正如 JLRishe 所说,msxml 不支持 XPath 2.0。

根据您所处的环境,您可能可以使用支持 XPath 2.0 或 XQuery 1.0(它是 XPath 2.0 的超集)的第三方软件。

微软的 XML 软件已经过时了,10 年来几乎没有什么新的发展。是时候考虑替代方案了。

于 2013-07-09T07:06:57.377 回答