我知道selectNode / selectSingleNode方法的名称实际上表明它们被设计为返回节点,但是可能有其他方式或设置可用于使XPath求值程序返回其他类型的数据(也是有效的) XPath结果)
oDocument.selectSingleNode("'1'");
抛出错误“Expression不返回DOM节点”
我想查询oDocument.selectSingleNode(“concat(@ day,' - ',@ monmon,' - ',@ year”)并得到一个结果(可以使用标准DOM XPath API)。的确,我可以查询节点,然后使用DOM遍历它们,但这会导致效率低下。
答案 0 :(得分:2)
selectSingleNode()
和selectNodes()
选择由XPath表达式标识的节点。
他们的返回值分别为IXMLDOMNode
和IXMLDOMNodeList
。没有别的东西可以归还。
不返回节点集的表达式(否则是有效的XPath表达式)将导致错误。
答案 1 :(得分:1)
msxml公开的API不允许此。
您可以查看the source code的XPath Visualizer,了解如何成功评估此类XPath表达式。用几句话来说,当一个异常被捕获,试图评估一个XPath表达式,并且这个异常的消息正是你的(原始)问题中提供的消息,那么动态创建一个特殊的XSLT转换,它返回XPath的结果表达式使用<xsl:value-of>