xpath:如何 select 具有多个子元素条件的父元素?
xpath: How to select Parent Element with conditions on Multiple Child Elements?
我正在使用 R 中的 'xml2' 库来读取 xml 文件以进行数据分析。
在下面的示例xml中,如何return子元素满足多个条件的父'row'元素?
我想要 select 'row' 元素 'year' 元素等于“2018”且 'vehicle_type' 元素等于 "scooter"?
<rows>
<row>
<vehicle_type>scooter</vehicle_type>
<year>2018</year>
<trip_duration>358</trip_duration>
</row>
<row>
<vehicle_type>scooter</vehicle_type>
<year>2019</year>
<trip_duration>358</trip_duration>
</row>
<row>
<vehicle_type>bicycle</vehicle_type>
<year>2018</year>
<trip_duration>358</trip_duration>
</row>
</rows>
我用了'|'作为 AND 运算符的符号。但是,它 return 是一个错误。
这是我到目前为止尝试过的代码:
library(xml2)
library(selectr)
tripXML <- read_xml('trips-1.xml')
rows <- xml_find_all(tripXML, "//row[./year/text()='2018' | ./vehicle_type/text()='scooter']")
这是 RStudio 中的错误信息。
Error in xpath_search(x$node, x$doc, xpath = xpath, nsMap = ns, num_results = Inf) : xmlXPathEval: 3 object left on the stack
我想select这一行值:
<row>
<vehicle_type>scooter</vehicle_type>
<year>2018</year>
<trip_duration>358</trip_duration>
</row>
希望大家帮帮忙,非常感谢
|
运算符不是 XPath 中的 and
运算符,而是 merge nodesets 运算符(Look here at W3Schools 一些灵感) .因此,要清理您的表达式,只需使用 and
运算符:
//row[year/text()='2018' and vehicle_type/text()='scooter']
然后你会得到你想要的输出。
(我还删除了前导 ./
因为它们不是必需的)
我正在使用 R 中的 'xml2' 库来读取 xml 文件以进行数据分析。
在下面的示例xml中,如何return子元素满足多个条件的父'row'元素?
我想要 select 'row' 元素 'year' 元素等于“2018”且 'vehicle_type' 元素等于 "scooter"?
<rows>
<row>
<vehicle_type>scooter</vehicle_type>
<year>2018</year>
<trip_duration>358</trip_duration>
</row>
<row>
<vehicle_type>scooter</vehicle_type>
<year>2019</year>
<trip_duration>358</trip_duration>
</row>
<row>
<vehicle_type>bicycle</vehicle_type>
<year>2018</year>
<trip_duration>358</trip_duration>
</row>
</rows>
我用了'|'作为 AND 运算符的符号。但是,它 return 是一个错误。
这是我到目前为止尝试过的代码:
library(xml2)
library(selectr)
tripXML <- read_xml('trips-1.xml')
rows <- xml_find_all(tripXML, "//row[./year/text()='2018' | ./vehicle_type/text()='scooter']")
这是 RStudio 中的错误信息。
Error in xpath_search(x$node, x$doc, xpath = xpath, nsMap = ns, num_results = Inf) : xmlXPathEval: 3 object left on the stack
我想select这一行值:
<row>
<vehicle_type>scooter</vehicle_type>
<year>2018</year>
<trip_duration>358</trip_duration>
</row>
希望大家帮帮忙,非常感谢
|
运算符不是 XPath 中的 and
运算符,而是 merge nodesets 运算符(Look here at W3Schools 一些灵感) .因此,要清理您的表达式,只需使用 and
运算符:
//row[year/text()='2018' and vehicle_type/text()='scooter']
然后你会得到你想要的输出。
(我还删除了前导 ./
因为它们不是必需的)