I am new to R XML
and want to parse below XML into a data.frame.
Searching in StackOverflow it seems it is better to use xpath
, to obtain a data.frame such as below.
locationName StartTime MaxT MinT
TaipeiCity 2015-08-06T12:00:00+08:00 34 30
TaipeiCity 2015-08-06T18:00:00+08:00 30 25
TaipeiCity 2015-08-07T06:00:00+08:00 30 25
New Taipei City 2015-08-06T12:00:00+08:00 33 30
New Taipei City 2015-08-06T18:00:00+08:00 30 25
New Taipei City 2015-08-07T06:00:00+08:00 30 25
Somehow, I am not familiar how to do this by parsing the elementName
and grouping this into a data.frame.
Below are my samples XML
<?xml version="1.0" encoding="UTF-8"?>
<cwbopendata xmlns="urn:cwb:gov:tw:cwbcommon:0.1">
<identifier >6a9fd4e8-cf93-7884-fa2e-4a30f6960e13</identifier>
<sender >weather@cwb.gov.tw</sender>
<sent >2015-08-06T11:09:03+08:00</sent>
<status >Actual</status>
<msgType >Issue</msgType>
<source >MFC</source>
<dataid >C0032-001</dataid>
<scope >Public</scope>
<dataset >
<datasetInfo>
<datasetDescription>36 hours wealther predicts</datasetDescription>
<issueTime>2015-08-06T11:00:00+08:00</issueTime>
<update>2015-08-06T11:09:03+08:00</update>
</datasetInfo>
<location>
<locationName>Taipei City</locationName>
<weatherElement>
<elementName>Wx</elementName>
<time>
<startTime>2015-08-06T12:00:00+08:00</startTime>
<endTime>2015-08-06T18:00:00+08:00</endTime>
<parameter>
<parameterName>Cloudy</parameterName>
<parameterValue>12</parameterValue>
</parameter>
</time>
<time>
<startTime>2015-08-06T18:00:00+08:00</startTime>
<endTime>2015-08-07T06:00:00+08:00</endTime>
<parameter>
<parameterName>Rain</parameterName>
<parameterValue>12</parameterValue>
</parameter>
</time>
<time>
<startTime>2015-08-07T06:00:00+08:00</startTime>
<endTime>2015-08-07T18:00:00+08:00</endTime>
<parameter>
<parameterName>Rain</parameterName>
<parameterValue>26</parameterValue>
</parameter>
</time>
</weatherElement>
<weatherElement>
<elementName>MaxT</elementName>
<time>
<startTime>2015-08-06T12:00:00+08:00</startTime>
<endTime>2015-08-06T18:00:00+08:00</endTime>
<parameter>
<parameterName>34</parameterName>
<parameterUnit>C</parameterUnit>
</parameter>
</time>
<time>
<startTime>2015-08-06T18:00:00+08:00</startTime>
<endTime>2015-08-07T06:00:00+08:00</endTime>
<parameter>
<parameterName>30</parameterName>
<parameterUnit>C</parameterUnit>
</parameter>
</time>
<time>
<startTime>2015-08-07T06:00:00+08:00</startTime>
<endTime>2015-08-07T18:00:00+08:00</endTime>
<parameter>
<parameterName>30</parameterName>
<parameterUnit>C</parameterUnit>
</parameter>
</time>
</weatherElement>
<weatherElement>
<elementName>MinT</elementName>
<time>
<startTime>2015-08-06T12:00:00+08:00</startTime>
<endTime>2015-08-06T18:00:00+08:00</endTime>
<parameter>
<parameterName>30</parameterName>
<parameterUnit>C</parameterUnit>
</parameter>
</time>
<time>
<startTime>2015-08-06T18:00:00+08:00</startTime>
<endTime>2015-08-07T06:00:00+08:00</endTime>
<parameter>
<parameterName>25</parameterName>
<parameterUnit>C</parameterUnit>
</parameter>
</time>
<time>
<startTime>2015-08-07T06:00:00+08:00</startTime>
<endTime>2015-08-07T18:00:00+08:00</endTime>
<parameter>
<parameterName>25</parameterName>
<parameterUnit>C</parameterUnit>
</parameter>
</time>
</weatherElement>
<weatherElement>
<elementName>CI</elementName>
<time>
<startTime>2015-08-06T12:00:00+08:00</startTime>
<endTime>2015-08-06T18:00:00+08:00</endTime>
<parameter>
<parameterName>HOT</parameterName>
</parameter>
</time>
<time>
<startTime>2015-08-06T18:00:00+08:00</startTime>
<endTime>2015-08-07T06:00:00+08:00</endTime>
<parameter>
<parameterName>comforatble</parameterName>
</parameter>
</time>
<time>
<startTime>2015-08-07T06:00:00+08:00</startTime>
<endTime>2015-08-07T18:00:00+08:00</endTime>
<parameter>
<parameterName>comforatble</parameterName>
</parameter>
</time>
</weatherElement>
<weatherElement>
<elementName>PoP</elementName>
<time>
<startTime>2015-08-06T12:00:00+08:00</startTime>
<endTime>2015-08-06T18:00:00+08:00</endTime>
<parameter>
<parameterName>50</parameterName>
<parameterUnit>percentage</parameterUnit>
</parameter>
</time>
<time>
<startTime>2015-08-06T18:00:00+08:00</startTime>
<endTime>2015-08-07T06:00:00+08:00</endTime>
<parameter>
<parameterName>70</parameterName>
<parameterUnit>percentage</parameterUnit>
</parameter>
</time>
<time>
<startTime>2015-08-07T06:00:00+08:00</startTime>
<endTime>2015-08-07T18:00:00+08:00</endTime>
<parameter>
<parameterName>80</parameterName>
<parameterUnit>percentage</parameterUnit>
</parameter>
</time>
</weatherElement>
</location>
<location>
<locationName>New Taipei City</locationName>
<weatherElement>
<elementName>Wx</elementName>
<time>
<startTime>2015-08-06T12:00:00+08:00</startTime>
<endTime>2015-08-06T18:00:00+08:00</endTime>
<parameter>
<parameterName>rainly</parameterName>
<parameterValue>12</parameterValue>
</parameter>
</time>
<time>
<startTime>2015-08-06T18:00:00+08:00</startTime>
<endTime>2015-08-07T06:00:00+08:00</endTime>
<parameter>
<parameterName>rainly</parameterName>
<parameterValue>12</parameterValue>
</parameter>
</time>
<time>
<startTime>2015-08-07T06:00:00+08:00</startTime>
<endTime>2015-08-07T18:00:00+08:00</endTime>
<parameter>
<parameterName>rainly</parameterName>
<parameterValue>26</parameterValue>
</parameter>
</time>
</weatherElement>
<weatherElement>
<elementName>MaxT</elementName>
<time>
<startTime>2015-08-06T12:00:00+08:00</startTime>
<endTime>2015-08-06T18:00:00+08:00</endTime>
<parameter>
<parameterName>33</parameterName>
<parameterUnit>C</parameterUnit>
</parameter>
</time>
<time>
<startTime>2015-08-06T18:00:00+08:00</startTime>
<endTime>2015-08-07T06:00:00+08:00</endTime>
<parameter>
<parameterName>30</parameterName>
<parameterUnit>C</parameterUnit>
</parameter>
</time>
<time>
<startTime>2015-08-07T06:00:00+08:00</startTime>
<endTime>2015-08-07T18:00:00+08:00</endTime>
<parameter>
<parameterName>30</parameterName>
<parameterUnit>C</parameterUnit>
</parameter>
</time>
</weatherElement>
<weatherElement>
<elementName>MinT</elementName>
<time>
<startTime>2015-08-06T12:00:00+08:00</startTime>
<endTime>2015-08-06T18:00:00+08:00</endTime>
<parameter>
<parameterName>30</parameterName>
<parameterUnit>C</parameterUnit>
</parameter>
</time>
<time>
<startTime>2015-08-06T18:00:00+08:00</startTime>
<endTime>2015-08-07T06:00:00+08:00</endTime>
<parameter>
<parameterName>25</parameterName>
<parameterUnit>C</parameterUnit>
</parameter>
</time>
<time>
<startTime>2015-08-07T06:00:00+08:00</startTime>
<endTime>2015-08-07T18:00:00+08:00</endTime>
<parameter>
<parameterName>25</parameterName>
<parameterUnit>C</parameterUnit>
</parameter>
</time>
</weatherElement>
<weatherElement>
<elementName>CI</elementName>
<time>
<startTime>2015-08-06T12:00:00+08:00</startTime>
<endTime>2015-08-06T18:00:00+08:00</endTime>
<parameter>
<parameterName>Hot</parameterName>
</parameter>
</time>
<time>
<startTime>2015-08-06T18:00:00+08:00</startTime>
<endTime>2015-08-07T06:00:00+08:00</endTime>
<parameter>
<parameterName>Hot</parameterName>
</parameter>
</time>
<time>
<startTime>2015-08-07T06:00:00+08:00</startTime>
<endTime>2015-08-07T18:00:00+08:00</endTime>
<parameter>
<parameterName>Hot</parameterName>
</parameter>
</time>
</weatherElement>
<weatherElement>
<elementName>PoP</elementName>
<time>
<startTime>2015-08-06T12:00:00+08:00</startTime>
<endTime>2015-08-06T18:00:00+08:00</endTime>
<parameter>
<parameterName>50</parameterName>
<parameterUnit>pertcentage</parameterUnit>
</parameter>
</time>
<time>
<startTime>2015-08-06T18:00:00+08:00</startTime>
<endTime>2015-08-07T06:00:00+08:00</endTime>
<parameter>
<parameterName>60</parameterName>
<parameterUnit>pertcentage</parameterUnit>
</parameter>
</time>
<time>
<startTime>2015-08-07T06:00:00+08:00</startTime>
<endTime>2015-08-07T18:00:00+08:00</endTime>
<parameter>
<parameterName>70</parameterName>
<parameterUnit>pertcentage</parameterUnit>
</parameter>
</time>
</weatherElement>
</location>
</dataset>
</cwbopendata>