使用 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
但是我觉得不是很优雅
我正在努力处理 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
但是我觉得不是很优雅