получить список div в HTML вместе с предыдущим заголовком, используя Nokogiri - PullRequest
1 голос
/ 25 октября 2011

Я пытаюсь извлечь список DIV, у которых class = "child", и связать "child" с DIV, у которого class = "header", который находится перед ним.

Например:

<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

Ответы [ 2 ]

2 голосов
/ 25 октября 2011

Еще одна версия "xpathy":

doc.xpath('//div[@class="child"]').each do |node|
    header = node.at('./preceding-sibling::div[@class="header"][1]')
    puts header.text + " --> " + node.text
end
2 голосов
/ 25 октября 2011

Просто сохраните предыдущий элемент заголовка:

header = ""
xml.xpath("//div").each{ |node|
  if node['class'] =~ /header/
    header = node.text
  else
    puts header + " --> " + node.text
  end
}
...