gpt4 book ai didi

xml - 当 *//.../@NODE 不起作用时,是否有比 */*/*/*/*[12] 更好的 XPATH 语法?

转载 作者:行者123 更新时间:2023-12-03 16:49:42 25 4
gpt4 key购买 nike

虽然我通过 XPATH 成功获得了(美国)PMMS 30 年固定抵押贷款利率,但我没有成功获得(美国)联邦曲线 yield 。这些 XML 数据集有什么不同,使一个工作而不是另一个工作?

我尝试了很多变体,对这个数据集有效的唯一变体是使用一些系列的 */*/*/*带有数组限定符 [12] .

总计count(*//)此数据集中的元素数量为 180

我正在使用 Google 表格 IMPORTXML(url,xpath) 来执行此操作。

这行得通

=IMPORTXML("https://www.treasury.gov/resource-center/data-chart-center/interest-rates/pages/XmlView.aspx?data=yield","*/*/*/*/*[12]")

这不是

=IMPORTXML("https://www.treasury.gov/resource-center/data-chart-center/interest-rates/pages/XmlView.aspx?data=yield","*//d:BC_10YEAR")

也不是这些

*//*@d:BC_10YEAR
*//@d:BC_10YEAR
*//d:BC_10YEAR[1]
*//m:properties[@d:BC_10YEAR]
*//*m:properties[@d:BC_10YEAR]

还有许多其他变体——我想我已经尝试了所有这些变体,但显然有些东西在躲避我。

理想的结果是专门获取最新的 BC_10YEAR,根据数据集 (2019-04-09T20:36:32Z) 是截至此发布的 2.49.

<d:BC_10YEAR m:type="Edm.Double">2.49</d:BC_10YEAR>

数据集编码 URL

美国财政部: https://data.treasury.gov/feed.svc/DailyTreasuryYieldCurveRateData?$filter=month(NEW_DATE)%20eq%204%20and%20year(NEW_DATE)%20eq%202019

房地美 http://www.freddiemac.com/pmms/pmmsthin.html

使用 XPATH 查询:

http://www.freddiemac.com/pmms/pmmsthin.html        IMPORTXML(url,xpath)
==========================================================================
XPATH //th[contains(text(),"30YR")]//..//td[1] 4.08 <== 30YR FMR
XPATH //th[contains(text(),"30YR")]//..//td[2] 0.5 <== 30YR Fees & Points

最佳答案

当您说“更好”时,您的标准是什么?您是在追求性能、可读性,还是在寻找一种在页面内容发生微小变化时仍能正常工作的表达式?

您的其他尝试失败的主要原因可能是 namespace 。如果 XPath 表达式中有名称,则本地名称和命名空间 URI 都需要与源文档中的内容相匹配。前缀绑定(bind)到命名空间以执行 XPath 的方式取决于您使用的 XPath API,有些人发现使用 *[local-name()='xyz'] 形式的构造忽略命名空间更方便/*[local-name()='abc'].在 XPath 2.0 中,您可以编写 /*:xyz/*:abc,但我想如果您使用的是 XPath 2.0,您可能会这么说。

关于xml - 当 *//.../@NODE 不起作用时,是否有比 */*/*/*/*[12] 更好的 XPATH 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55603640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com