代码之家  ›  专栏  ›  技术社区  ›  Sergey Ilinsky

是否有方法从MSXML XPath评估器获取非节点结果?

  •  2
  • Sergey Ilinsky  · 技术社区  · 16 年前

    我知道selectnode/selectsinglenode方法的名称实际上表明它们是为返回一个节点而设计的,但是可能有其他方法或设置可以使xpath计算器返回其他类型的数据(这也是有效的xpath结果)。

    oDocument.selectSingleNode("'1'"); 
    

    引发错误“表达式不返回dom节点”

    我想查询odocument.selectsinglenode(“concat(@day,-',@month,-',@year”)并得到一个结果(这在标准的dom xpath api中是可能的)。实际上,我可以查询节点,然后用DOM遍历它们,但是这样做会降低效率。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Tomalak    16 年前

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

    它们的返回值属于类型 IXMLDOMNode IXMLDOMNodeList ,分别。没有其他东西可以退还。

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

        2
  •  1
  •   Dimitre Novatchev    16 年前

    MSXML公开的API不允许这样做 .

    你可以调查一下 the source code XPath Visualizer 查看如何成功计算此类xpath表达式 . 简而言之,当一个异常试图评估一个xpath表达式时被捕获,而这个异常的消息正好是您(原始)问题中提供的消息时,就会动态地创建一个特殊的xslt转换,并使用 <xsl:value-of>