2014-12-16 2 views
2

У меня есть этот документ XMLДоступ детей элементы XML

require(XML) 
url <- "http://stats.oecd.org/restsdmx/sdmx.ashx/GetData/SNA_TABLE1/NOR+CAN+FRA+DEU+GBR+USA+ITA+JAP.B1_GA+B1G_P119+B1G+B1GVA+B1GVB_E+B1GVC+B1GVF+B1GVG_I+B1GVJ+B1GVK+B1GVL+B1GVM_N+B1GVO_Q+B1GVR_U+D21_D31+D21S1+D31S1+DB1_GA.CXC/all?startTime=1950&endTime=2013" 
xml <- xmlParse(url) 

, который я пытаюсь получить доступ.

я могу получить доступ к корневому элементу с

getNodeSet(xml, "//message:MessageGroup") 

, но тогда я не могу спуститься на три, чтобы разобрать все элементы DataSet/Series.

getNodeSet(xml, "//message:MessageGroup/DataSet/Series") 

возвращает пустой список. Это проблема с пространством имен документа?

ответ

2

Да. Проблема заключается в пространстве имен по умолчанию. Вы должны указать ему имя, чтобы иметь возможность выбирать из него узлы. Вы можете сделать что-то вроде этого

xml <- xmlParse(url) 
ns<-xmlNamespaceDefinitions(xml, simplify=T) 
names(ns)[1] <- "def" #assign name "def" 

Затем вы можете сделать

getNodeSet(xml, "//message:MessageGroup/def:DataSet/def:Series", namespaces=ns) 
Смежные вопросы