我在尝试从XML文件中提取数据时遇到问题(数据存储为属性而不是元素,如果我是正确的话)。我在Windows 7上使用R 3.1.2和RStudio。
文件(缩写)如下所示:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<MensajePredicionesEolicas>
<CodElemento Zona="Espana">
<PotInstalada valor="22751000" />
<FechaFichero valor="2014120907" />
<Detalle>
<FechaDato valor="2014-12-09">
<HoraDato valor="7">
<Prediccion valor="10588564" />
<Percentil10 valor="9563875" />
<Percentil90 valor="11435276" />
</HoraDato>
<HoraDato valor="8">
<Prediccion valor="10269849" />
<Percentil10 valor="8588400" />
<Percentil90 valor="11623841" />
</HoraDato>
<HoraDato valor="9">
<Prediccion valor="9823678" />
<Percentil10 valor="7840628" />
<Percentil90 valor="11536093" />
</HoraDato>
</FechaDato>
</Detalle>
</CodElemento>
</MensajePredicionesEolicas>
例如,要提取我试过的atrribute FechaDato的值:
data <- xmlParse("file.xml")
date.pred.path <- "//CodElemento[@Zona='Espana']/Detalle/FechaDato"
date.pred <- sapply(data[date.pred.path], xmlGetAttr, "FechaDato")
我正在获取空列表。有任何想法吗?
答案 0 :(得分:0)
我认为XML解析器在到达CodElemento和之后Detalle时会感到困惑。但是,我设法通过应用xmlToList来提取信息。
xmlText <- c('<?xml version="1.0" encoding="ISO-8859-1" ?>
<MensajePredicionesEolicas>
...
</MensajePredicionesEolicas>')
library(XML)
#Parse the XML
data <- xmlTreeParse(xmlText)
#Access to the root element (MensajePredicionesEolicas)
MPE <- xmlRoot(doc)
#Access to CodElemento and apply xmlToList function to obtain the data
(MPE <- xmlApply(MPE,xmlToList))
结果:
$CodElemento
$CodElemento$PotInstalada
valor
"22751000"
$CodElemento$FechaFichero
valor
"2014120907"
$CodElemento$Detalle
FechaDato
"10588564"
"9563875"
"11435276"
"7"
"10269849"
"8588400"
"11623841"
"8"
"9823678"
"7840628"
"11536093"
"9"
.attrs "2014-12-09"
$CodElemento$.attrs
Zona
"Espana"
您可以使用以下方法知道提取FechaDato数据:
MPE$CodElemento$Detalle
不幸的是,它失去了参数的名称(Prediccion,Percentil10,Percentil90)......