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

use*_*716 4 java jsoup

我正在使用jsoup来解析一些HTML内容.解析HTML内容后,它改变了骆驼套管属性为小写喜欢 <svg viewBox='XXXX'><svg viewbox='XXXX'>.

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

Jon*_*ley 7

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

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

Document doc = Jsoup.parse(xml, baseUrl, Parser.xmlParser());
Run Code Online (Sandbox Code Playgroud)

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

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


Mac*_*ski 2

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

您最多能做的就是下载源代码、修改行并构建您自己的库副本。

您还应该考虑如果不将属性名称转换为小写,是否会引入一些奇怪的行为。也许是一些问题Document.getElementByAttribute,甚至是其他依赖功能?