简体   繁体   中英

R XML getNodeset doensn't find nodes

hope this is very simple. I have this XML

"> xmlroot

"<Period>
  <timeInterval>
    <start>2015-10-20T00:00Z</start>
    <end>2015-10-21T00:00Z</end>
  </timeInterval>
  <resolution>PT60M</resolution>
  <Point>
    <position>1</position>
    <price.amount>24.20</price.amount>
  </Point>
  <Point>
    <position>2</position>
    <price.amount>24.28</price.amount>
  </Point>
  <Point>
    <position>3</position>
    <price.amount>24.89</price.amount>
  </Point>
  <Point>
    <position>4</position>
    <price.amount>25.64</price.amount>
  </Point>
  <Point>
    <position>5</position>
    <price.amount>26.36</price.amount>
  </Point>
  <Point>
    <position>6</position>
    <price.amount>27.83</price.amount>
  </Point>
  <Point>
    <position>7</position>
    <price.amount>28.88</price.amount>
  </Point>
  <Point>
    <position>8</position>
    <price.amount>29.96</price.amount>
  </Point>
  <Point>
    <position>9</position>
    <price.amount>28.73</price.amount>
  </Point>
  <Point>
    <position>10</position>
    <price.amount>28.09</price.amount>
  </Point>
  <Point>
    <position>11</position>
    <price.amount>27.54</price.amount>
  </Point>
  <Point>
    <position>12</position>
    <price.amount>27.52</price.amount>
  </Point>
  <Point>
    <position>13</position>
    <price.amount>27.35</price.amount>
  </Point>
  <Point>
    <position>14</position>
    <price.amount>27.18</price.amount>
  </Point>
  <Point>
    <position>15</position>
    <price.amount>27.04</price.amount>
  </Point>
  <Point>
    <position>16</position>
    <price.amount>27.39</price.amount>
  </Point>
  <Point>
    <position>17</position>
    <price.amount>27.17</price.amount>
  </Point>
  <Point>
    <position>18</position>
    <price.amount>27.23</price.amount>
  </Point>
  <Point>
    <position>19</position>
    <price.amount>27.16</price.amount>
  </Point>
  <Point>
    <position>20</position>
    <price.amount>25.77</price.amount>
  </Point>
  <Point>
    <position>21</position>
    <price.amount>24.80</price.amount>
  </Point>
  <Point>
    <position>22</position>
    <price.amount>24.08</price.amount>
  </Point>
  <Point>
    <position>23</position>
    <price.amount>23.77</price.amount>
  </Point>
  <Point>
    <position>24</position>
    <price.amount>23.64</price.amount>
  </Point>
</Period> "

I am passing this command in R : getNodeSet(doc = xmlroot,path = 'Period/Point')

and getting this result:

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

I was hoping to be able to extract this data into a simple dataframe -- any ideas?

For reference:

class(xmlroot) [1] "XMLInternalElementNode" "XMLInternalNode" "XMLAbstractNode"

When using XPath, you can specify the nodes without using the whole path, like this: "//Point". Check out this great tutorial on manipulating XML files in R.

For your specific example you can use this:

xmlToDataFrame(getNodeSet(xmlRoot, "//Point"))

which returns

   position price.amount
1         1        24.20
2         2        24.28
3         3        24.89
4         4        25.64
5         5        26.36
6         6        27.83

... and so on.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM