我正在尝试解析 API 返回的 XML,如下所示:
library(httr2)
library(xml2)
library(tidyverse)
resp_xml <- request("https://data-api.ecb.europa.eu/service/data/CBD2/A..W0.11._Z._Z.A.A.A0000._X.ALL.CA._Z.LE._T.EUR") %>%
req_perform() %>%
resp_body_xml()
xml2::xml_find_all(resp_xml, "//generic:SeriesKey") %>%
xml2::xml_find_all("//generic:Value")
如何仅提取 id="REF_ARA" 的值?我想获取仅包含“AT”、“BE”等国家/地区代码的列表。我已经尝试过类似的操作,但我只得到 NA:
xml2::xml_find_all(resp_xml, "//generic:SeriesKey") %>%
xml2::xml_find_all("//generic:Value") %>%
xml2::xml_attr("REF_AREA")
如果您想获取
id="REF_AREA"
的值,您可以这样做:
xml_find_all(resp_xml, "//generic:SeriesKey") %>%
xml_find_all("//generic:Value") %>%
.[xml_attr(., "id") == "REF_AREA"] %>%
xml_attr("value")
#> [1] "AT" "B0" "BE" "BG" "CY" "CZ" "DE" "DK" "EE" "ES" "FI" "FR" "GB" "GR" "HR"
#> [16] "HU" "IE" "IT" "LT" "LU" "LV" "MT" "NL" "PL" "PT" "RO" "SE" "SI" "SK" "U2"
或者如果您想要节点集,则跳过最后一行:
xml_find_all(resp_xml, "//generic:SeriesKey") %>%
xml_find_all("//generic:Value") %>%
.[xml_attr(., "id") == "REF_AREA"]
#> {xml_nodeset (30)}
#> [1] <generic:Value id="REF_AREA" value="AT"/>
#> [2] <generic:Value id="REF_AREA" value="B0"/>
#> [3] <generic:Value id="REF_AREA" value="BE"/>
#> [4] <generic:Value id="REF_AREA" value="BG"/>
#> [5] <generic:Value id="REF_AREA" value="CY"/>
#> [6] <generic:Value id="REF_AREA" value="CZ"/>
#> [7] <generic:Value id="REF_AREA" value="DE"/>
#> [8] <generic:Value id="REF_AREA" value="DK"/>
#> [9] <generic:Value id="REF_AREA" value="EE"/>
#> [10] <generic:Value id="REF_AREA" value="ES"/>
#> [11] <generic:Value id="REF_AREA" value="FI"/>
#> [12] <generic:Value id="REF_AREA" value="FR"/>
#> [13] <generic:Value id="REF_AREA" value="GB"/>
#> [14] <generic:Value id="REF_AREA" value="GR"/>
#> [15] <generic:Value id="REF_AREA" value="HR"/>
#> [16] <generic:Value id="REF_AREA" value="HU"/>
#> [17] <generic:Value id="REF_AREA" value="IE"/>
#> [18] <generic:Value id="REF_AREA" value="IT"/>
#> [19] <generic:Value id="REF_AREA" value="LT"/>
#> [20] <generic:Value id="REF_AREA" value="LU"/>
#> ...
创建于 2023-12-06,使用 reprex v2.0.2