gpt4 book ai didi

xml - 如何使用 xmlAttrs 制作长度节点的 xpathSApply 输出向量?

转载 作者:数据小太阳 更新时间:2023-10-29 02:24:43 25 4
gpt4 key购买 nike

这是对 a very similar question 的跟进我已经问过了,但这次我试图获取 xmlAttrs 而不是 xmlValue。假设我们有以下内容:

my.xml <- '
<tv>
<show>
<name>Star Trek TNG</name>
<rating>1.0</rating>
<a href="http://www.google.com">google</a>
</show>
<show>
<name>Doctor Who</name>
<a href="http://www.google.com">google</a>
</show>
<show>
<name>Babylon 5</name>
<rating>2.0</rating>
</show>
</tv>
'
library(XML)
doc <- xmlParse(my.xml)
xpathSApply(doc, '/tv/show', function(x) xmlValue(xmlChildren(x)$a))
# [1] "google" "google" NA

我希望输出是

# [1] "http://www.google.com" "http://www.google.com" NA 

但是我就是想不通。我在想它可能是这样的,但我错了:

xpathSApply(doc, '/tv/show', function(x) xmlAttrs(xmlChildren(x)$a))
# Error in UseMethod("xmlAttrs", node) :
# no applicable method for 'xmlAttrs' applied to an object of class "NULL"

我得到的最接近的是:

xpathSApply(doc, '/tv/show', function(x) xmlChildren(x)$a)
# [[1]]
# <a href="http://wwww.google.com">google</a>
#
# [[2]]
# <a href="http://wwww.google.com">google</a>
#
# [[3]]
# NULL

最佳答案

差一点就明白了。您只需要自己处理 NULL 情况,因为 xmlAttrs() 在遇到 NULL 时会给您错误:

> xpathSApply(doc, '/tv/show', function(x) ifelse(is.null(xmlChildren(x)$a), NA, xmlAttrs(xmlChildren(x)$a, 'href')))
[1] "http://www.google.com" "http://www.google.com" NA

关于xml - 如何使用 xmlAttrs 制作长度节点的 xpathSApply 输出向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8041211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com