2013-04-23 82 views
0

當你指定例如XML節點的路徑://tr[@class='party-rep']根路徑

,做

getNodeSet(rootsChild, //tr[@class='party-rep']) 

,這種功能還是從樹的根搜索尋找具有類TR DIV「 party-rep「,或者我們將rootsChild指定爲doc,它將從rootsChild及其所有子項開始搜索並忽略實際的根目錄?

回答

4

這將會給你的XML文檔中的所有<tr class='party-rep'>

getNodeSet(rootsChild, "//tr[@class='party-rep']") 

如果你想把所有的<tr class='party-rep'>元素這是rootsChild元素的孩子,你必須在你的XPath表達式前加點:

getNodeSet(rootsChild, ".//tr[@class='party-rep']") 

下面是一個例子:

R> xml <- "<root><a><td>foo</td></a><b><td>bar</td></b></root>" 
R> doc <- xmlParse(xml) 
R> doc 
# <?xml version="1.0"?> 
# <root> 
# <a> 
#  <td>foo</td> 
# </a> 
# <b> 
#  <td>bar</td> 
# </b> 
# </root> 

R> a <- getNodeSet(doc, '//a')[[1]] 
R> getNodeSet(a, '//td') 
# [[1]] 
# <td>foo</td> 
# 
# [[2]] 
# <td>bar</td> 
# 
# attr(,"class") 
# [1] "XMLNodeSet" 

R> getNodeSet(a, './/td') 
# [[1]] 
# <td>foo</td> 
# 
# attr(,"class") 
# [1] "XMLNodeSet" 
+0

您的示例建議(與您的描述相反)添加「。」限制檢索到第一個節點。 – 2013-04-23 08:21:34

+0

@DWin'.'將檢索限制在給予'getNodeSet'的節點的子節點上。你的意思是我應該在''節點上增加幾個'​​'元素來使這個例子更加明確嗎? – juba 2013-04-23 08:33:49