xpath查找所有后续兄弟相邻节点直到另一种类型

时间:2011-07-31 10:36:54

标签: ruby xpath nokogiri

  

可能重复:
  How to parse consecutive tags with Nokogiri?

有人可以给我一条线吗?

我正在使用ruby和nokogiri来解析这样的文档(片段):

...
<dt>DOUE:</dt>
<dd>
  <a href="http://ted.europa.eu">Accés al DOUE</a>
  - 19/07/11
</dd>
<dt class="multi-linia">Criteris d'adjudicació:</dt>
<dd class="info-tabulada">
  <strong>Ponderació:</strong>
  50.00 -
  <strong>Criteri:</strong>
  oferta econòmica
</dd>
<dd class="info-tabulada">
  <strong>Ponderació:</strong>
  40.00 -
  <strong>Criteri:</strong>
  prestacions tècniques i funcionals
</dd>
<dd class="info-tabulada">
  <strong>Ponderació:</strong>
  10.00 -
  <strong>Criteri:</strong>
  altres elements
</dd>
<dt>another dt now</dt>
<dd>and its corresponding dd too</dd>
...

通常我有备用和连续的dt和dd元素。在这种情况下非常简单。但是在示例中,有时在dt元素之间使用多个dd元素来破坏此规则。

要解析这个列表,我有一个名为area的var区域指向该列表,我这样做:

area.search("dt").each do |dt|
  dd=dt.search("./following-sibling::dd[1]/text()")
  puts "#{clear_string(dt.text)}: #{clear_string(dd.text)}"
end

其中clear_string()是一个简单的函数,可以删除不必要的空格字符。

解析时,我想将dt的文本与下面的dd文本相关联,直到下一个dt。顺便说一句,在dd元素的情况下,我只想保留它的文本,而不是它的孩子的文本。我该怎么办?

0 个答案:

没有答案