我正在尝试提取其class =“child”的DIV列表,并将“child”与其前面出现的class =“header”的DIV相关联。
例如:
<div class=header>HEADER A</div>
<div class=child>CHILD A.1</div>
<div class=child>CHILD A.2</div>
<div class=child>CHILD A.3</div>
<div class=header>HEADER B</div>
<div class=child>CHILD B.1</div>
<div class=child>CHILD B.2</div>
<div class=child>CHILD B.3</div>
我希望有类似下面的内容
HEADER A --> CHILD A.1
HEADER A --> CHILD A.2
HEADER A --> CHILD A.3
HEADER B --> CHILD B.1
HEADER B --> CHILD B.2
HEADER B --> CHILD B.3
答案 0 :(得分:2)
只需存储上一个标题元素:
header = ""
xml.xpath("//div").each{ |node|
if node['class'] =~ /header/
header = node.text
else
puts header + " --> " + node.text
end
}
答案 1 :(得分:2)
更'xpathy'版本:
doc.xpath('//div[@class="child"]').each do |node|
header = node.at('./preceding-sibling::div[@class="header"][1]')
puts header.text + " --> " + node.text
end