我在使用R函数xpathSApply来选择某些子节点。目前,我只能选择一个子节点,例如

xpathSApply(dat, "//Establishment[AddressLine3='Mumbles']/BusinessName",xmlValue)


这给我列出了子节点AddressLine3 = Mumbles的餐馆列表。我还有一个感兴趣的子节点称为Rating(完整路径为//Establishment/Rating)。我想做的是在一个xPath查询中带回一对值,即BusinessNameRating子节点。能做到吗?

最佳答案

您可以使用“ |”分隔这两个查询。但是显然它将返回同一向量中的值,然后您必须对结果进行格式化。

url <- "http://ratings.food.gov.uk/OpenDataFiles/FHRS568en-GB.xml"
doc <- xmlParse(url)

datas <- xpathSApply(doc, "//EstablishmentDetail[AddressLine3='Mumbles']/BusinessName | //EstablishmentDetail[AddressLine3='Mumbles']/RatingValue", xmlValue)

data.frame(BusinessName = datas[seq(1, 117, by = 2)], RatingValue = datas[-seq(1, 117, by = 2)])

10-04 19:16