java - 使用 Jsoup 处理新行/换行符

标签 java javascript jsp jsoup jspx

在通过 Jsoup 解析 Jspx 文件时,我注意到当遇到新行并且如果存在结束 html 标记时,jsoup 会将内容视为标记外部。另外,我不希望内容出现在介于两者之间的输出中。

例如:-

我的 jspx 文件:-

<div xmlns:spring="http://www.springframework.org/tags"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" 
xmlns:jsp="http://java.sun.com/JSP/Page">

<div> I only require this text </div>

<script type="text/javascript">
        var myVar= '${myVar}',
        var myVar1= '${myVar1}',
        var myVar2= '${myVar2}',
        var myVar3= '${myVar3}',
        var myVar4= '${myVar4}';
</script>

在java代码中:-

Document doc = Jsoup.parse(s);
String text = doc.body().text();

现在,当我运行这段代码时:-

实际营业收入:-

xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" 
xmlns:jsp="http://java.sun.com/JSP/Page">

I only require this text

var myVar= '${myVar}',
var myVar1= '${myVar1}',
var myVar2= '${myVar2}',
var myVar3= '${myVar3}',
var myVar4= '${myVar4}';

预期是:-

I only require this text

添加评论时会发生同样的事情,在几行之后我将关闭评论,然后它也会在输出中显示 ("-->")。

我可能做错了什么,或者可能不知道 Jsoup 的完整范围。谁能帮我解决这个问题?

谢谢。

最佳答案

有了给定的输入和您的命令,JSoup 实际上正在做正确的事情。

让我们分解一下:

Document doc = Jsoup.parse(s);

当呈现任意字符串进行解析时,JSoup 会将其包装在 <html> 中和 <body>生成结果 Document 的标签有点有效。

String text = doc.body().text();

现在您要求 all the text of the document's body and all its children .因此,JSoup 很高兴地为您提供了这一点 - 剥离它可以识别的标签,并为您留下比您想要的更多的东西。

JSoup 的真正强大之处在于 select() method on Elements , 所以让我们用它来缩小到 div感兴趣的:

String text = doc.body().select("div div").text();

如果您不熟悉 CSS 和/或 JQuery,这只是简单地选择了属于 div 的元素。在另一个里面 div - 它应该很好地挑选出你的目标文本。

请注意,如果您想要真正安全,最好确定感兴趣的 div(即 <div id="mydiv">I only require this text</div> ),然后也使用 ownText优于 text :

String text = doc.body().select("div#mydiv").ownText();

ownText() only gets the immediate text of this element ,所以如果有人向 #mydiv 添加子元素它不会破坏任何东西/

关于java - 使用 Jsoup 处理新行/换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29278527/

相关文章:

java - 无法实例化类型 ExpandableListAdapter

java - 无法访问未找到 org.apache.commons.pool2.impl.GenericObjectPoolConfig 的 org.apache.commons.pool2.impl.GenericObjectPoolConfig 类文件

java - messagebodyreader Jersey

javascript - 单击元素外部(但不是内部)时关闭/隐藏元素

javascript - EventEmitter() 的 "Static methods"

java - 从 JSP 到 Servlet 的动态更新字段获取数据

java - 连接字符串名称

javascript - 如何将文本附加到 d3 中的矩形?

jsp - JSP/Servlet 的隐藏特性

java - CRUD 接口(interface)对多个子类型使用一个 Controller