我正在使用jsoup来解析一些HTML内容。在解析HTML内容之后,它将camel cased属性更改为小写
<svg viewBox='XXXX'>
至<svg viewbox='XXXX'>
。
有人可以建议我在使用jsoup 1.8.1解析html内容时如何保留案例吗?
答案 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
或其他相关函数存在一些问题?