2013-04-23 91 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