我有一个XPath来选择我想要的类://div[@class='myclass']
。但是它返回了整个div(也带有<div class='myclass'>
,但是我想只返回这个标签的内容而没有标签本身。我怎么能这样做?
答案 0 :(得分:41)
node() = innerXml
text() = innerText
两者都是数组,因此text()[1]是第一个子文本节点...
答案 1 :(得分:33)
使用xpath,返回的东西是路径中不是条件的最后一件事。那意味着什么?好吧,条件是[]
之间的条件(但你已经知道了),而你的内容就像 pathElement [那样,其'class'属性值为'my class' ] 。 pathElement直接位于[
。
[]
以外的所有内容都是路径,因此在//a/b/c[@blah='bleh']/d
a , b , c < / em>和 d 都是路径元素, blah 是属性, bleh 是文字值。如果此路径匹配,它将返回 d ,这是最后一个非条件的东西。
您的特定路径返回(系列) div ,是xpath路径中的最后一个。因此,此返回值包括您的案例中的顶级节点 div ,以及它(它们)所有(他们的)子节点下面的它们。节点可以是元素或文本(或注释,处理指令,......)。
在节点下面可以有多个文本节点,因此数组pOcHa会谈到。 x/text()
返回x的直接子项的所有文本,x/node()
返回所有子节点,包括文本。
希望这有帮助。
答案 2 :(得分:5)
对旧的常见问题的新答案:
对于此XML
lapply(1:3, purrr::as_mapper(`[`), .x = letters)
lapply(1:3, rlang::as_closure(`[`), .x = letters)
# [[1]]
# [1] "a"
#
# [[2]]
# [1] "b"
#
# [[3]]
# [1] "c"
您可以使用XPath以两种方式之一选择<div class="myclass">content</div>
:
文字节点选择
这个XPath,
content
将选择目标//div[@class='myclass']/text()
元素的文本节点子节点,
div
,视要求提供。
元素的字符串值
这个XPath,
content
将返回目标string(//div[@class='myclass'])
元素的string-value,
div
,再次按要求提供。
更多信息:这是note解释元素的 字符串值 :
元素节点的string-value是该节点的串联 元素的所有文本节点string-value的descendants个 文档顺序中的节点。
答案 3 :(得分:1)