ループして各ロットに属する更新を取得する必要がありますが、使用する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>