2013-12-23 50 views
1

是否可以通過執行XPath搜索返回所有匹配的字符串索引?Ruby:使用XPath,並獲取匹配的字符串索引?

例如,如果我這樣做:

doc = Nokogiri::HTML(htmlSource) 

doc.xpath('//meta[case_insensitive_equals(@name,"author")]', XpathFunctions.new) 

它給我的一切,相匹配的元素。但是我怎樣才能得到每場比賽的字符串索引?換句話說,元素開始的整個HTML源代碼的索引?

例輸入:

<HTML><meta name="author" content="test"></HTML> 

輸出示例: 我想該指數6,因爲這是元標記開始

+1

您能否提供一個輸入和期望輸出的例子? –

+0

我加了Carlo Cannas –

+0

謝謝,現在很清楚。但是,爲什麼你需要這樣的東西?我不知道Ruby的庫,但通常一旦文檔被解析,就不再有對輸入字符串中各種標記的引用。 –

回答

1

字符串索引?號線索引?是的,但是,有一點需要注意:XML和HTML不是基於行的格式。行號對他們來說意義不大,因此,雖然可以得到行號,但您可能會發現文件只有一行,並且知道號碼並不會更好。

這裏有一個快速測試使用http://www.example.com拿到第一<p>標籤的行號:

require 'nokogiri' 
require 'open-uri' 

doc = Nokogiri::HTML(open('http://www.example.com/')) 
first_p = doc.at('p') 
first_p.line # => 45 
first_p.to_html 
# => "<p>This domain is established to be used for illustrative examples in documents. You may use this\n domain in examples without prior coordination or asking for permission.</p>" 

一旦你知道是什麼行中的變量是你可能惹它通過該行中搜索該文件。

但是,爲什麼?如果您想修改線路,可以使用Nokogiri的replace方法輕鬆完成。如果你想提取這一行的部分,這很容易使用to_html