2

我知道 selectNode/selectSingleNode 方法的名称实际上表明它们旨在返回一个节点,但是也许还有其他方法或设置可用于使 XPath 评估器返回其他类型的数据(这也是有效的 XPath 结果)

oDocument.selectSingleNode("'1'"); 

抛出错误“表达式不返回 DOM 节点”

我想查询 oDocument.selectSingleNode("concat(@day, '-', @month, '-', @year") 并得到一个结果(这可以通过标准 DOM XPath API)。确实我可以查询节点然后用 DOM 遍历它们,但是这将是低效的方式。

4

2 回答 2

2

selectSingleNode()selectNodes()选择由 XPath 表达式标识的节点。

它们的返回值分别是IXMLDOMNodeIXMLDOMNodeList。没有其他东西可以退货。

不返回节点集的表达式(否则是有效的 XPath 表达式)将导致错误。

于 2009-01-29T11:58:54.173 回答
1

msxml 公开的 API 不允许这样做

您可以查看XPath Visualizer的源代码,了解如何成功评估此类 XPath 表达式。简而言之,当捕获到试图评估 XPath 表达式的异常时,并且此异常的消息正是您(原始)问题中提供的消息,然后动态创建特殊的 XSLT 转换,并返回 XPath 的结果表达式使用<xsl:value-of>

于 2009-01-29T14:16:32.787 回答