与如何在xpath中处理单引号类似,我想转义单引号。不同的是,我不能排除目标字符串中可能出现双引号的可能性。
目标:
使用Xpath(在R中)同时转义双引号和单引号。目标元素应该作为一个变量使用,而不像现有答案中一样硬编码。(它应该是一个变量,因为我不知道内容事先是否存在单引号、双引号或两者都有)。
现有方法:
library(rvest)
library(magrittr)
html <- "<div>1</div><div>Father's son</div>"
target <- "Father's son"
html %>% xml2::read_html() %>% html_nodes(xpath = paste0("//*[contains(text(), \"", target,"\")]"))
{xml_nodeset (1)}
[1] <div>Father's son</div>
无法工作:
html <- "<div>1</div><div>Fat\"her's son</div>"
target <- "Fat\"her's son"
html %>% xml2::read_html() %>% html_nodes(xpath = paste0("//*[contains(text(), \"", target,"\")]"))
{xml_nodeset (0)}
Warning message:
In xpath_search(x$node, x$doc, xpath = xpath, nsMap = ns, num_results = Inf) :
Invalid expression [1207]
更新
非R语言的解决方案,我会尝试“转换为R语言”的,欢迎提供。