我可以使用jsoup确定HTML属性是用单引号还是双引号引起来(或不包括)?

时间:2018-08-21 13:37:27

标签: jsoup quoting

我正在使用jsoup解析HTML文档并对其进行一些分析。

解析后,有没有任何方法来确定给定属性是用双引号,单引号引起来还是不使用引号引起来?

换句话说,有什么办法可以区分以下内容:

Document foo = Jsoup.parse("<html><body><a name=\"value\"></body></html>");
Document bar = Jsoup.parse("<html><body><a name='value'></body></html>");
Document baz = Jsoup.parse("<html><body><a name=value></body></html>");

理想情况下,Attribute将具有布尔值isDoubleQuoted()isSingleQuoted()isUnquoted(),或者类似的值。

Jsoup似乎只是在解析过程中丢弃了该信息,这很可悲,因为我需要知道进行分析。

但是也许我缺少什么? :)

请注意,我不能简单地在原始字符串上使用正则表达式。我正在分析的文档可以任意复杂,并且任何给定的属性(即键/值对)在文档中可能会出现多次。因此,简单地为键/值映射“ grep”(例如,查看我用jsoup解析的字符串是否包含name=valuename='value'name="value")将无法工作找出答案(尽管这是一个近似值,尽管不能令人满意,但我可能不得不忍受直到找到更好的解决方案为止)。

1 个答案:

答案 0 :(得分:1)

以防万一有人感兴趣:我仔细研究了jsoup,并确认在解析过程中丢弃了如何引用特定属性值的信息。当然,它在解析过程中(有必要)可用,但是基本上被丢弃了,并且没有存储在结果DOM树中。

我创建了一个拉取请求,以将缺少的功能添加到jsoup:https://github.com/jhy/jsoup/pull/1114

不确定将PR加入jsoup的机会有多大。该项目目前有40个待处理的拉取请求(包括矿山),其中最古老的请求可追溯到2011年秋季(七年前)。另一方面,一些PR很快就被合并了。 PR的最新合并可以追溯到大约2个月前,并且PR在提交后仅几天就被合并了。让我们来看看。在此之前,要有一个稳定的jsoup版本添加此功能,否则我至少可以使用自己的fork。