【问题标题】:Is Google Sheet's XPath Query Following a Certain Standard?Google Sheet 的 XPath 查询是否遵循某个标准?
【发布时间】:2020-11-18 14:49:36
【问题描述】:

我正在尝试在 Google 电子表格中创建一个股票列表(PH 股票),其中有一列包含最新价格,并将其与我设定的目标价格进行比较。今天下午我一直在尝试解析这个http://phisix-api.appspot.com/stocks/BPI.xml,但我无法获取标签内的值。

通读 XPath 文档,我认为它很简单:=IMPORTXML("http://phisix-api.appspot.com/stocks/BPI.xml", "//stocks/stock/price/amount") 遵循树的层次结构并跟踪我需要的标记。但这似乎不起作用。然后我尝试了=IMPORTXML("http://phisix-api.appspot.com/stocks/BPI.xml", "//stocks/stock/price/amount/text()"),因为无论如何我需要的是标签内的文本,但没有骰子。

Google 表格是否遵循特殊的编码/标准或格式?我唯一要做的就是通过使用=IMPORTXML("http://phisix-api.appspot.com/stocks/BPI.xml", "//@symbol") 来获得symbol 的值,我没有尝试其他任何方法。

我什至尝试了从https://xmltoolbox.appspot.com/xpath_generator.html 生成的 Xpath,即:/stocks[@xmlns="http://phisix-api.appspot.com/phisix-stocks"]/stock[@symbol="BPI"]/price/amount ,但它不起作用。

有什么建议吗?

【问题讨论】:

  • 生成的 XPath 是垃圾——在 XDM 数据模型中,永远不会有一个名为“xmlns”的属性。但它揭示了问题的原因,Yitzhak 已经为您解决了。

标签: xml xpath google-sheets-formula


【解决方案1】:

有问题的 XML 包含一个默认命名空间。它为 XPath 表达式创建了一个“问题”。

Google 表格 (GS) 似乎只与 XPath 1.0 兼容。

如果您的环境支持 XPath 2.0,则可以使用命名空间通配符,如下所示。

XPath 2.0

/*:stocks/*:stock/*:price/*:amount/text()

XPath 1.0

/*[local-name()='stocks']/*[local-name()='stock']/*[local-name()='price']/*[local-name()='amount']/text()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多