Ich habe eine XML-Datei mit Knoten mit dem gleichen Namen und ich kann nicht herausfinden, wie Sie die Daten auswählen, die ich möchte, um einen Datenrahmen zu erstellen. Ich bin neu in R und XML und ich kann es nicht funktionieren lassen!Parsing XML zu R wenn mehrere Knoten mit den gleichen Namen
Meine XML sieht aus wie (nur der Anfang):
<GL_Document xmlns="">
<time_Period.timeInterval>...</time_Period.timeInterval>
<TimeSeries>
<mRID>1</mRID>
<MktPSRType>
<psrType>ProdType1</psrType>
</MktPSRType>
<Period>
<timeInterval>
<start>2015-12</start>
<end>2016-11</end>
</timeInterval>
<resolution>PT60M</resolution>
<Point>
<position>1</position>
<quantity>9</quantity>
</Point>
<Point>
<position>2</position>
<quantity>7</quantity>
</Point>
<Point>
<position>3</position>
<quantity>9</quantity>
</Point>
Der Code verschiedene Knoten namens „Timeseries“ mit der gleichen Art von Daten (hier Zeitraum entwickelt wird, nicht um die gesamte Struktur zu sehen, enthält)
<GL_Document xmlns="">
<time_Period.timeInterval>...</time_Period.timeInterval>
<TimeSeries>
<mRID>1</mRID>
<MktPSRType>
<psrType>ProdType1</psrType>
</MktPSRType>
<Period>...</Period>
</TimeSeries>
<TimeSeries>
<mRID>2</mRID>
<MktPSRType>
<psrType>ProdType2</psrType>
</MktPSRType>
<Period>...</Period>
</TimeSeries>
<TimeSeries>...</TimeSeries>
<TimeSeries>...</TimeSeries>
<TimeSeries>...</TimeSeries>
<TimeSeries>...</TimeSeries>
<TimeSeries>...</TimeSeries>
</GL_Document>
ich möchte die Daten in folgendem Format erhalten:
psrType position quantity
ProdType1 1 9
... ... ...
ProdType2 1 ...
Ich habe versucht, die Lösungen wie in diesem Beitrag erwähnt zu verwenden: How to parse XML to R data frame Aber ohne Erfolg. Mein Code sieht wie folgt aus, aber ich die resultierende Datenrahmen enthält keine Daten:
xml.url3<-getURL(xml.file3)
doc<-xmlParse(xml.url3)
position_path<-"//GL_Document/TimeSeries/Period/Point/position"
quantity_path<-"//GL_Document/TimerSeries/Period/Point/quantity"
df<-data.frame(
pos=as.integer(sapply(doc[position_path],as,"integer")),
quant=as.integer(sapply(doc[quantity_path],as,"integer")))
Vielen Dank für Ihre Hilfe!
Ok, so schließlich ist es das, was ich getan habe: 'xml. fileexp <- "https://website.com" xml.urlexp <-getURL (xml.fileexp) doc <-xmlParse (xml.urlexp) df <- ldply (xmlToList (doc), data.frame) dfexp <-df [df $ .id == "TimeSeries",] ' – Daldal
Ok Entschuldigung, ich muss zweimal kommentieren Bearbeitung! Dann hatte ich einen Datenrahmen mit allen Dingen in meinen Zeitreihen Knoten aufgelistet (in Zeilen). Da Start- und Stoppzeit angegeben wurden, konnte ich einen Code schreiben, der die Anzahl der Positionen im Intervall berücksichtigt. Wahrscheinlich nicht die cleverste Lösung, aber es funktioniert! – Daldal