如何在jsoup解析中保留大小写?

时间:2015-07-14 07:47:31

标签: java jsoup

我正在使用jsoup来解析一些HTML内容。在解析HTML内容之后,它将camel cased属性更改为小写 <svg viewBox='XXXX'><svg viewbox='XXXX'>

有人可以建议我在使用jsoup 1.8.1解析html内容时如何保留案例吗?

2 个答案:

答案 0 :(得分:7)

我刚刚发布了jsoup 1.10.1,其中包括对保留标记和/或属性大小写的支持。您可以使用ParseSettings来控制它。默认情况下,HTML解析器将继续使用小写标准化标记和属性,XML解析器将保留它们。您可以在创建解析器时指定这些设置。

使用 XML解析器(默认保留大小写):

Document doc = Jsoup.parse(xml, baseUrl, Parser.xmlParser());

使用 HTML解析器并将其设置为preserve-case:

Parser parser = Parser.htmlParser();
parser.settings(new ParseSettings(true, true)); // tag, attribute preserve case
Document doc = parser.parseInput(html, baseUrl);

答案 1 :(得分:2)

解析文档时保留属性的名称字符大小写非常困难。对于JSoup 1.8.2,负责将所有属性名称转换为小写的行是TokeniserState.java#649,并且没有空间来插入用户的自定义代码。

您可以做的最多的事情是下载源代码,修改代码行并构建自己的库副本。

如果你没有转换属性,你还应该考虑是否会引入一些奇怪的行为。名称为小写。也许Document.getElementByAttribute或其他相关函数存在一些问题?