dom - 为什么 document.evaluate ('.' , document.body, null, XPathResult.ANY_TYPE, null).singleNodeValue 抛出异常?

标签 dom xpath document.evaluate

如果我告诉 XPath 评估器我想要一个 XPathResult.FIRST_ORDERED_NODE_TYPE (8),或者 ANY_UNORDERED_NODE_TYPE (9),我会得到 body 元素,如预期的那样 - 但所有其他结果类型都会产生 表达式无法转换为返回指定类型。 异常(在 Firefox 中;WebKit 和 Opera 似乎不太慷慨,只是将其命名为 TYPE_ERR: DOM XPath Exception 52 改为。

这是怎么回事?并且,为了清楚起见,重新表述问题:为什么选择上下文节点是一个类型错误,而不是明确推断为单节点结果,这从 XPath 表达式本身(".",中显而易见),是“self::node()”的同义词),至少对于我自己来说是这样?

(作为引用,它不是专门访问 .singleNodeValue 触发错误的 - 所有 XPathResult 的属性都指示相同的错误。)

最佳答案

嗯,有一个规范 http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathResult-singleNodeValue其中清楚地说明了 singleNodeValue ,“如果 resultType 不是 ANY_UNORDERED_NODE_TYPE 或 FIRST_ORDERED_NODE_TYPE,则会引发 TYPE_ERR”。实现遵循该规范。

关于dom - 为什么 document.evaluate ('.' , document.body, null, XPathResult.ANY_TYPE, null).singleNodeValue 抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13538197/

相关文章:

javascript - IE JavaScript 错误 : document. 评估非法 # 字符

javascript - 如何在javascript中将div的文本设置为其ID

javascript - 为什么通过 javascript 更改事件的字体大小需要关闭?

ruby - 使用 REXML XPath 按顺序获取元素

xml - 在子节点不包含属性的情况下,如何使用 Xpath 定位父节点?

javascript - 从 document.evaluate 合并 XPathResults

javascript - polymer 破坏 document.evaluate (xpath)

php - 使用 PHP 简单 HTML DOM 解析器查找表格单元格并获取下一个兄弟的内容

JavaScript/jQuery : hasDescendant/hasAncestor

python - scrapy 带有换行符和嵌套标签