有没有办法从MSXML XPath评估器获取非节点结果?

时间:2009-01-29 11:52:14

标签: javascript dom xpath msxml

我知道selectNode / selectSingleNode方法的名称实际上表明它们被设计为返回节点,但是可能有其他方式或设置可用于使XPath求值程序返回其他类型的数据(也是有效的) XPath结果)

oDocument.selectSingleNode("'1'"); 

抛出错误“Expression不返回DOM节点”

我想查询oDocument.selectSingleNode(“concat(@ day,' - ',@ monmon,' - ',@ year”)并得到一个结果(可以使用标准DOM XPath API)。的确,我可以查询节点,然后使用DOM遍历它们,但这会导致效率低下。

2 个答案:

答案 0 :(得分:2)

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

他们的返回值分别为IXMLDOMNodeIXMLDOMNodeList。没有别的东西可以归还。

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

答案 1 :(得分:1)

msxml公开的API不允许此

您可以查看the source codeXPath Visualizer,了解如何成功评估此类XPath表达式。用几句话来说,当一个异常被捕获,试图评估一个XPath表达式,并且这个异常的消息正是你的(原始)问题中提供的消息,那么动态创建一个特殊的XSLT转换,它返回XPath的结果表达式使用<xsl:value-of>