/ / Розбір XML-файлів в R: Витяг даних з XML-вузла - r, xml-parsing, xmlnode

Розбір XML-файлів в R: вилучення кадрів даних з вузла XML - r, xml-parsing, xmlnode

Моя зразок 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-вузлів, що містять дані, лише коли оцінка становить 30. Це виглядає так

    [[4584]]
<Segment code="63365958" speed="41" score="30" c-value="0">
<SubSegment speed="41" offset="0,433"/>
</Segment>

attr(,"class")
[1] "XMLNodeSet"

Проте, я не можу перетворити цей XMLnodeset на кадр даних із значеннями "code", "cvalue", speed ". lapply(nodes, function (x) xmlSApply(x,xmlValue)) виводить порожні вектори з "Підсегмента", а не "Сегмент".

Мені також потрібно зберігати "timestamp" в "SegmentSpeedResults" як окрему змінну.

Відповіді:

0 для відповіді № 1

Займаючись проблемою з xAttrs, вирішила мою проблему вилучення значень в сегменті вузла. Це добре працювало для мене

nodes <- getNodeSet(input,"//Segment[@score="30"]")
all_parameters <- sapply(nodes, xmlAttrs)