使用 Nokogiri 循环 XML 并获取子元素

Loop in XML with Nokogiri and get a child element

我正在努力处理 XML / GPX 文件,我需要在其中获取一些特定数据:

<?xml version="1.0" encoding="UTF-8"?>
  <trk>
    <trkseg>
      <trkde>
        <ele>78</ele>
        <time>2021-01-31T08:30:38.000Z</time>
        <extensions>
          <ns4:Extension>
            <ns4:hr>115</ns4:hr>
          </ns4:Extension>
        </extensions>
      </trkde>
      <trkde>
        <ele>77.8000030517578125</ele>
        <time>2021-01-31T08:30:40.000Z</time>
        <extensions>
          <ns4:Extension>
            <ns4:hr>115</ns4:hr>
          </ns4:Extension>
        </extensions>
      </trkde>
    </trkseg>
  </trk>
</gpx>

到目前为止我正在尝试这样做

doc.css("trkde").each do |trkde|
    unless trkde.css("time").blank?
        time = Time.zone.parse(trkde.css("time").text)
        hr = 0
        unless trkde.css("extensions").blank?
            puts trkde.css("ns4:Extension")
            hr = trkde.css("ns4:hr")
        end
        puts time.to_s + ":" + hr.to_s
    end
end

但我没有成功从 ns4:hr

获取值

我仔细阅读了https://nokogiri.org/tutorials/searching_a_xml_html_document.html,但以我目前的理解,我没有成功。

我确实尝试过 hr = track_point.xpath("ns4:hr") 但它也不起作用

到目前为止我是这样找到的

hr = at_xpath('.//*[name()="ns4:hr"]').text.to_i

但是我觉得不是很优雅