jsoup解析方式 保留大小写和禁用转义字符

1.环境表述:

pom.xml依赖版本号

        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.10.2</version>
            <!--<version>1.8.3</version>-->
        </dependency>

2.解析方式:

Jsoup方式通过File解析

    public static Document returnDocument(File file){
        try {
            Document document = Jsoup.parse(file, "UTF-8");
            return document;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

Jsoup方式通过url解析, 比如百度链接

    public static Document returnUrlDocument(String url){
        try {
            Document document = Jsoup.connect(url).post();
            return document;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
Jsoup方式通过InputStream 流获取并保留大小写
    public static Document returnDocumentInputStream(File file){
        try {
            //解析中保留大小写 start
            Parser parser = Parser.htmlParser();
            parser.settings(new ParseSettings(true, true));
            //解析中保留大小写 end
            InputStream input = new FileInputStream(file);
            Document document = Jsoup.parse(input, "UTF-8", "", parser);
            return document;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

Parser方式通过InputStream 流获取,并保留大小写

    public static Document returnDocumentParser(File file){
        try {
            String fileString = FileUtils.readFileToString(file, getFileEncode(file.toString()));
            //解析中保留大小写 start
            Parser parser = Parser.htmlParser();
            parser.settings(new ParseSettings(true, true));
            //解析中保留大小写 end
            InputStream input = new FileInputStream(file);
            Document document = parser.parseInput(fileString, getFileEncode(file.toString()));
            return document;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

3.保留大小写问题:

使用 jsoup ParseSettings保留大小写, HTML解析是默认为小写, XML解析保留大小写

//xml解析 默认保留大小写
Document doc = Jsoup.parse(xml, baseUrl, Parser.xmlParser());

//HTML解析
Parser parser = Parser.htmlParser();
parser.settings(new ParseSettings(true, true));
Document document = parser.parseInput(fileString, "UTF-8");

//或者

Parser parser = Parser.htmlParser();
parser.settings(new ParseSettings(true, true));
InputStream input = new FileInputStream(file);
Document document = Jsoup.parse(input, "UTF-8", "", parser);

4.转义字符问题:

4.1问题表述
&nbsp; 表示空格
&lt; 表示 <
&gt; 表示 >
<script></script>
转换为
&lt;script&gt;&lt;/script&gt;
4.2网上搜索发现提供方式有
4.2.1 方式一: StringEscapeUtils转义比Jsoup小, 存在潜在问题
System.out.println(StringEscapeUtils.unescapeHtml4("&lt;script&gt;&lt;/script&gt;"));
//输入结果为:  <script></script>
4.2.2方式二: 清除base设置后, 无效

使用Jsoup处理HTML默认转义方式为base
有3种模式xhtml, base, extended
使用Jsoup 依赖版本

<version>1.8.3</version>
//使用当前属性Jsoup版本使用1.8.3版本
 Document document = Jsoup.parse(file, "UTF-8");
 Entities.EscapeMode.base.getMap().clear();
💯4.3不进行转义

输出document, 不进行转义处理
使用Jsoup 依赖版本

<version>1.10.2</version>
   //禁用转义
   String documentNew = Parser.unescapeEntities(document.toString(), false);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值