单个xpath选择器和结果的细分

时间:2013-08-11 01:19:01

标签: java xpath

假设以下文件:

<html>
  <body>
    <div>
      <a href="home.htm">Home</a>
    </div>
    <div>
      <a href="page.htm">Link to a page</a>
      <b>Bold text</b>
      <a href="page2.htm">Link to another page</a>
    </div>
   </body>
</html>

如果我运行此xPath,我会得到以下结果:

/html/body/div/a/text() -> HomeLink to a pageLink to another page

我正在寻找一种对结果进行反向工程的方法,并尽可能简单地提取各个xPath选择器及其关联结果。有点像:

/html/body/div[1]/a[1]/text() <-> Home
/html/body/div[2]/a[1]/text() <-> Link to a page
/html/body/div[2]/a[2]/text() <-> Link to another page

我可以通过遍历DOM树或SAX解析来猜测一些复杂的程序,但看起来太复杂了。

有人能想出一个更简单的方法来在xPath中实现这个结果(也许还有一点Java的帮助)?基本上问题是要知道每个标签的每个索引以及每个成功组合的相关结果。

由于

1 个答案:

答案 0 :(得分:0)

不幸的是,我不懂java。

以下是使用nokogiri gem的示例Ruby代码:

require 'nokogiri'
doc = Nokogiri::HTML open('/tmp/input.html')
doc.xpath('//a//text()').each {|a| puts "#{a.path} -> #{a.text}" }