Моего образца XMLРазбор файлов XML в R: Извлечение dataframe из XML набора узлов
- <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» для всех записей, когда оценка равна 30. cvalue присутствует только тогда, когда оценка равна 30, в противном случае она опускается. В настоящее время мой код
input <- xmlParse("20160128-235648.xml")
nodes <- getNodeSet(input,"//Segment[@score='30']")
Это создание XML NodeSet «узлы», содержащие данные только тогда, когда оценка 30. Похоже, что этот
[[4584]]
<Segment code="63365958" speed="41" score="30" c-value="0">
<SubSegment speed="41" offset="0,433"/>
</Segment>
attr(,"class")
[1] "XMLNodeSet"
Однако, я не в состоянии преобразовать эту XMLnodeset в dataframe со значениями «кода», «cvalue», скорость». lapply(nodes, function (x) xmlSApply(x,xmlValue))
является извлечение пустых векторов из„подотрезка“, а не„сегмент“.
Мне также нужно сохранить„метку“в„SegmentSpeedResults“как отдельная переменная.
См: http://stackoverflow.com/questions/36247451/r-xml-tree-to-dataframe/36247826#36247826. Обратите внимание, что вам понадобится xmlAttrs, а не xmlValue. –
Использование 'sapply (nodes, function (x) xmlSApply (x, xmlAttrs))' извлекает dataframe из «Subsegment», а не из «Segment» – Sumit