importXML://comment()vs//*/comment()中的xpath

importXML://comment()vs//*/comment()中的xpath,xpath,google-sheets,Xpath,Google Sheets,为什么我要走 这个问题可能很愚蠢,但我对//comment()一点结果也没有(#N/A) 这可能是一般情况下的问题: //node vs //*/node 根据XPath语言定义,//comment()应查找文档中任何位置的所有注释,而//*/comment()应查找以元素为父元素的所有注释:即,除以文档节点为父节点的注释外的所有注释 所以它们不是等价的,但是第二个表达式应该返回第一个表达式结果的子集。因为没有其他人能给出一个好的答案,我加上我的: 我怀疑这些问题源于所讨论的页面的AJAX特性

为什么我要走

这个问题可能很愚蠢,但我对
//comment()
一点结果也没有(#N/A)

这可能是一般情况下的问题:

//node vs //*/node

根据XPath语言定义,
//comment()
应查找文档中任何位置的所有注释,而
//*/comment()
应查找以元素为父元素的所有注释:即,除以文档节点为父节点的注释外的所有注释


所以它们不是等价的,但是第二个表达式应该返回第一个表达式结果的子集。

因为没有其他人能给出一个好的答案,我加上我的:

我怀疑这些问题源于所讨论的页面的AJAX特性,以及googlesheets上的IMPORTXML()方法的操作方式

使用XPath
/
查询文档根节点和选择节点给了我们一种直觉。这样做会返回一个充满JavaScript的单元格,但不是页面的实际(HTML)源。使用
/
会导致所述加载错误。看起来它只是在搜索包含JS的这一个单元格,因此无法使用XPath查询
//comment()
找到注释(或任何其他子节点)

但是,如果我们查询
/*
,电子表格上的大约100多个单元格将填充各种页面元素和源代码片段(这可能是由于加载到页面中的单独源文件中的某些EOL或换行符造成的)。这样,页面的所有部分都被加载,包括注释。因此,现在我们可以使用您发现的
//*/comment()
加载它们(
//*/comment()
也适用于我)


这种行为没有意义(当然也不符合XPath规范),但它似乎是GS的
IMPORTXML
方法处理问题的方式。

?您是否通过
/*/comment()
获得结果?如果
//comment()
显示为空,则另一个版本也将为空。@Tim Biegeleisen g.sh**充满惊喜?链接到sandbox g.spreadsheet我得到了两个表达式相同的结果。。。再次检查thoroughly@Andersson哪里-在沙盒g.电子表格中?我认为这与GS传播结果的方式有关:如果您在该源代码上使用
/*
,您将看到GS填充各种单元格和列。如果你只尝试接收根,你只会得到一个带有javascript的单元格。我这里说的是规范。如果一个产品表现不同,那么它是错误的。(我不知道什么是
#N/A
的意思)。@MichaelK这在总体上是正确的,但在g.sheets中尤其不清楚。如果你不厌其烦地查看沙盒,你会发现:#不适用是错误的:导入的内容是空的。-i、 在这两种情况下,它都应该接收XML内容。正如我所说,我谈论的是语言规范。如果某个特定的实现不符合规范,我不能发表评论。
//node vs //*/node