首页 > 解决方案 > 用于在 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>"&gt; 

Jsoup 1.12.1 lib 解析输出:

<script src="<c:url value=" resources js jquery.min.js"></script>

预期输出:

"/resources/js/jquery.min.js"

实际输出:

"<c:url value="

任何人都可以对这个问题有所了解吗?

标签: javascriptjspjsoupscript-tag

解决方案


似乎 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' />

推荐阅读