xml - Google Sheet 的 XPath 查询是否遵循某个标准?
问题描述
我正在尝试在 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 表格是否遵循特殊的编码/标准或格式?我唯一要做的就是symbol
通过=IMPORTXML("http://phisix-api.appspot.com/stocks/BPI.xml", "//@symbol")
不使用其他我尝试的方法来获得价值。
我什至尝试了从https://xmltoolbox.appspot.com/xpath_generator.html生成的 Xpath,它是:/stocks[@xmlns="http://phisix-api.appspot.com/phisix-stocks"]/stock[@symbol="BPI"]/price/amount
但它不起作用。
有什么建议吗?
解决方案
有问题的 XML 包含一个默认名称空间。它为 XPath 表达式创建了一个“问题”。
Google Sheets (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()
推荐阅读
- perl - 如何在 perl 中对键上的哈希数组进行排序?
- azure - 多个文档的 Azure Cosmos DB SDK v3 查询失败:网关无法检索查询计划
- android - 软件访问智能手机自动对焦
- sql - 根据多个 id 获取最新出现的行
- php - 数据未在 Ajax 登录中传递
- python - 使用 cv2.imread:"
返回NULL而不设置错误”,好像无法打开图片或获取数据 - opencv - ArUco Marker Detection 在不同情况下背景噪声对象的行为
- azure - 使用 Azure 数据工厂“Rest”数据集从本地服务器下载二进制内容(图像)
- android - 实时数据列表 r 不使用 DiffUtil 方法更新
- asp.net - 无法在 Windows server 2016 数据库上运行的 Azure VM 上发布 ASP.NET 网页