Return 个在 xml2 中具有相同名称的节点

Return nodes with same name in xml2

我有一个 xml 文件,其中有许多同名节点。节点的名称不在我的控制范围内。有没有办法访问具有相同名称的每个节点的值,而不仅仅是第一个。

xml_child() 的帮助文件中指出您可以使用 search 参数来 "specify the name of the child node to return. If there are multiple child nodes with the same name, the first will be returned."

不幸的是,我也不总是知道同名节点的位置,所以我也不能使用数值作为搜索参数。

例如:

# similar example provided in the xml2 documentation
x <- read_xml("<foo> a <d>e1</d> <d>e2</d> </foo>")

# this gives expected output from the first child node named "d"
xml_child(x, "d") %>% xml_contents()

# this gives me expected output from second child node with name "d"
# but I don't always know the position of this node
xml_child(x, 2) %>% xml_contents()

那么有没有办法让我访问名称为 "d" 的第二个节点的值?

您可以使用[]指定您想要的节点索引。您可以使用

获得第二个 d 节点
xml_child(x, "d[2]") %>% xml_contents()

这是一个xpath predicate