2012-07-08 118 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