javascript - 用于在 Jsp 文件中解析脚本标签(带有 c 标签)的 Jsoup 解析问题
问题描述
我有一个 JSP 文件,我需要从该文件中获取脚本标签的 src 属性中的 js 文件详细信息。这适用于普通的纯脚本标签(如下所示)
<script src="/resources/js/jquery.min.js" ></script>
我正在使用带有 UTF-8 字符集的 Jsoup 库解析方法将 jsp 文件解析为 html 文件
Document htmlDocument = Jsoup.parse(file, "UTF-8");
从文档(HTML 文档)中获取所有具有 src 属性的脚本标签的集合,在 foreach 循环中从集合中获取 src 属性详细信息。
实际脚本标签:
<script src="<c:url value="/resources/js/jquery.min.js" />"></script>
Jsoup 1.8.1 lib 解析输出:
<script src="<c:url value=" esources="" s="" query.min.js"=""></script>">
Jsoup 1.12.1 lib 解析输出:
<script src="<c:url value=" resources js jquery.min.js"></script>
预期输出:
"/resources/js/jquery.min.js"
实际输出:
"<c:url value="
任何人都可以对这个问题有所了解吗?
解决方案
似乎 JSoup 解析器不喜欢内部引号。我不会说这是一个 JSoup 问题,因为您的解析不符合 HTML 标准。换句话说,我认为 JSoup 正在按设计工作(对于 SO 上的代码格式也可以这样说)。
我不确定 JSP 是否可以正常工作,但是当我尝试将内部双引号换成单引号时:
<script src="<c:url value'/resources/js/jquery.min.js' />"></script>
解析似乎按您的预期工作
<c:url value'/resources/js/jquery.min.js' />
推荐阅读
- oracle - Oracle Partition 基于其他表数据
- xcode - 在swift 4中使用协议+委托在viewControllers之间发送数据
- ios - 更改节中特定索引的行高
- spring-boot - 在 dto 级别的 Spring Boot 中定义日期序列化
- sql - 如何通过 sql server express 连接 AWS sql server
- sql - AWS Athena (Presto) 偏移支持
- android - 当您更改并返回成绩选项卡时如何刷新选项卡式活动?
- ios - 无法分配给属性:“宽度”是仅获取属性
- javascript - 解析:ParseError { 代码:101,消息:'找不到对象。' }
- cassandra - 是否有一种惯用的方式将客户端版本控制到数据库?