2012-07-08 119 views
6

我需要將jsoup元素映射回源HTML中的特定字符偏移量。換句話說,如果我有HTML,看起來像這樣:獲取jsoup中元素的字符偏移量

Hello <br/> World 

我需要知道,「你好」開始,在偏移0並具有6個字符,<br/>開始長度偏移量6,具有長度5個字符等。

我無法在返回此信息的Element javadoc中找到getter。它可以被檢索?

+0

你有沒有找到一個解決方案,這不會導致你自己寫的語法? – elaRosca 2013-06-08 16:03:17

+0

不,我仍在使用jflex。 – ccleve 2013-06-09 23:11:47

回答

0

我不相信Jsoup有這個功能。這個問題似乎比HTML解析更接近詞法分析。

我會編寫一個語法,然後編寫一個詞法分析器來對付將HTML標記爲HTML的語法,並提供您正在尋找的偏移量。

首先,用Jsoup解析文檔以驗證它是否爲有效的HTML。

然後,根據語法詞法分析文檔。一個語法可能看起來像:

Document := {optional-opening-tag} | {literal} {optional-opening-tag} | {optional-closing-tag} 

optional-opening-tag := ["<" {literal} ">" {optional-opening-tag}|{literal} ] | "" 

optional-closing-tag := "</ {literal} ">" | "" 

literal := any string of characters not beginning with whitespace, or containing "<" 

將每個您在存儲令牌,第一個字符的索引和長度的對象找到令牌。

+0

是的,這是正確的答案。實際上我已經使用JFlex編寫了一個詞法分析器,並且它可以工作,而且我仍然在使用它,但我寧願不維護它。我試圖擺脫代碼。 – ccleve 2013-02-25 17:18:52