2011-11-07 101 views
3

可以说我有以下几点:如何使用xmlValue使xpathSApply输出长度节点的向量?

library(XML)  

my.xml <- ' 
<tv> 
    <show> 
    <name>Star Trek TNG</name> 
    <rating>1.0</rating> 
    </show> 
    <show> 
    <name>Doctor Who</name> 
    </show> 
    <show> 
    <name>Babylon 5</name> 
    <rating>2.0</rating> 
    </show> 
</tv> 
' 

doc <- xmlParse(my.xml) 
xpathSApply(doc, "/tv/show/rating", xmlValue) 

# [1] "1.0" "2.0" 

有三个 '秀' 的节点。我怎么能代替使输出是:

# [1] "1.0" NULL "2.0" 

,以便考虑没有在XML格式的评级,但仍是3的长度谁博士?

回答

5

如果您提供的路径一直到'评分',节点列表将只有2个元素开始。因此,当您将xmlValue()应用于此节点列表时,输出也只有2个元素。你可以从树上的一级开始解决:

> xpathSApply(doc, '/tv/show', function(x) xmlValue(xmlChildren(x)$rating)) 
[1] "1.0" NA "2.0" 
+0

正是我需要的,谢谢! –

相关问题