Benim örnek XML den dataframe ÖzüAyrıştırma XML dosyaları: XML nodeset
Ben skor 30'a eşit olduğunda "hız", "kod" ve tüm girişler için "cvalue" çıkarmak istediğiniz- <Inrix responseId="123" statusText="" createdDate="2016-01-29T05:57:00Z">
- <SegmentSpeedResultSet coverage="255">
- <SegmentSpeedResults timestamp="2016-01-29T05:56:47Z">
- <score="10" speed="57" code="4814018">
<SubSegment speed="57" offset="0,1753"/>
</Segment>
- <score="30" speed="57" code="4814018" cvalue="57">
<SubSegment speed="57" offset="0,1753"/>
</Segment>
</SegmentSpeedResults>
</SegmentSpeedResultSet>
</Inrix>
. cvalue, yalnızca skor 30 olduğunda bulunur, aksi halde atlanır. Bu puan O Ancak bu
[[4584]]
<Segment code="63365958" speed="41" score="30" c-value="0">
<SubSegment speed="41" offset="0,433"/>
</Segment>
attr(,"class")
[1] "XMLNodeSet"
benziyor 30'dur yalnızca verilerini içeren XML nodeset "düğümleri" yaratıyor
input <- xmlParse("20160128-235648.xml")
nodes <- getNodeSet(input,"//Segment[@score='30']")
Halen kodum, ben bu XMLnodeset dönüştürmek mümkün değilim "Code", "cvalue", speed "değerlerine sahip bir dataframe. lapply(nodes, function (x) xmlSApply(x,xmlValue))
," Segment "yerine" Subsegment "öğesinden boş vektörleri ayıklar.
" SegmentSpeedResults "içinde" timestamp "değerini de kaydetmem gerekir. bağımsız değişken
See için iyi çalıştı: http://stackoverflow.com/questions/36247451/r-xml-tree-to-dataframe/36247826#36247826. XmlValue yerine xmlAttrs gerekeceğini unutmayın. –
Sapply (nodes, function (x) xmlSApply (x, xmlAttrs)) 'nı kullanarak" Segment "den ziyade" Subsegment "kısmından dataframe çıkartın – Sumit