【问题标题】:Loop in XML with Nokogiri and get a child element使用 Nokogiri 在 XML 中循环并获取子元素
【发布时间】:2021-05-05 21:11:43
【问题描述】:

我正在处理需要获取一些特定数据的 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"),但它也不起作用

【问题讨论】:

    标签: ruby-on-rails ruby nokogiri


    【解决方案1】:

    到目前为止我找到了这种方式

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

    但我觉得它不是很优雅

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      相关资源
      最近更新 更多