XPath嵌套节点

问题描述 投票:0回答:1

我需要循环并获取属于每个批次的更新,但是当我使用xmldoc.xpath("//update")时,即使没有嵌套到批次中,它也会给我所有更新。如何才能获得嵌套到所选批次的更新?

lots = xmldoc.xpath("//lot")

lots.each do |lot|
  @lot = Lot.new
  @lot.legacy_id = lot.at("legacy_id").text
  @lot.event = @event
  @lot.group = lot.at("group").text
  @lot.number = lot.at("number").text
  @lot.title = lot.at("title").text
  @lot.description = lot.at("description").text
  @lot.price = lot.at("price").text
  @lot.start_at = lot.at("start_at").text
  @lot.end_at = lot.at("end_at").text
  @lot.position = lot.at("position").text
  @lot.notes = lot.at("notes").text
  @lot.save

  updates = xmldoc.xpath("//update")
  updates.each do |update|
    @lot_update = LotUpdate.new
    @lot_update.save
  end
end

XML:

<?xml version="1.0" encoding="UTF-8" ?>
<event>
    <legacy_id>54321</legacy_id>
    <lots>
        <lot>
            <legacy_id>12345</legacy_id>
            <number>1</number>
            <title>Big Cow</title>
            <description>A big cow</description>
            <position>1</position>
            <price>500</price>
            <start_at>2013-02-15 10:00:00</start_at>
            <end_at>2013-02-15 12:00:00</end_at>
            <group>1</group>
        </lot>
    </lots>
    <lots>
        <lot>
            <legacy_id>12346</legacy_id>
            <number>1</number>
            <title>Small Cow</title>
            <description>A small cow</description>
            <position>1</position>
            <price>500</price>
        </lot>
    </lots>
</event>
ruby-on-rails ruby xml xpath nokogiri
1个回答
1
投票

你想要lot.xpath('.//update')

© www.soinside.com 2019 - 2024. All rights reserved.