Jsoup如何去除自动生成换行符"\n"

罗罗罗写代码 发布于 2016/02/22 16:31
阅读 2K+
收藏 0

使用Jsoup.parse(intro)得到Document对象doc后,doc.html()中会在<html>,<p>表签等后出现\n换行符,有没有大神能把我解决下这个问题啊,去除自动生成换行符"\n"!!

代码如下:

String intro = "<html>"
+"<head></head>"
+"<body>"
+"<p><img src='http://venada-mall.img-cn-shanghai.aliyuncs.com/productIntro/93617533374177280/20160107/1452165039617.jpg' style='' title='1.jpg'></p>"
+"<p><img src='http://venada-mall.img-cn-shanghai.aliyuncs.com/productIntro/93617533374177280/20160107/1452165039994.jpg' style='' title='2.jpg'><img src='http://venada-mall.img-cn-shanghai.aliyuncs.com/productIntro/93617533374177280/20160107/1452165040571.jpg' title='3.jpg' style='white-space: normal;'></p>"
+"<p><br></p>"
+"</body>"
+"</html>";
Document doc = Jsoup.parse(intro);

String intro1 = doc.html();

断点显示intro1的值为:

<html>\n <head></head>\n <body>\n  <p><img src="http://venada-mall.img-cn-shanghai.aliyuncs.com/productIntro/93617533374177280/20160107/1452165039617.jpg" style="" title="1.jpg"></p>\n  <p><img src="http://venada-mall.img-cn-shanghai.aliyuncs.com/productIntro/93617533374177280/20160107/1452165039994.jpg" style="" title="2.jpg"><img src="http://venada-mall.img-cn-shanghai.aliyuncs.com/productIntro/93617533374177280/20160107/1452165040571.jpg" title="3.jpg" style="white-space: normal;"></p>\n  <p><br></p>\n </body>\n</html>

添加了换行符\n

加载中
0
_wxyz
_wxyz

建议直接获取文档的body内容!用如下方法:

String body = Jsoup.connect(url).ignoreContentType(true).execute().body();

_wxyz
_wxyz
@罗罗罗写代码 原来你是妹子啊~~不好意思啊,开个玩笑,如有冒犯,还请原谅!
_wxyz
_wxyz
回复 @罗罗罗写代码 : 直接解析还真没用过,是在没办法就手动替换吧
罗罗罗写代码
回复 @抽象派 : 我也是个妹子⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄
罗罗罗写代码
大神,刚刚激动了,我是从数据库获取的intro内容,貌似不好用你提供的方法。。。。 用doc.body().html()在获取到body内容,但是<p>标签之间还是有空格/(ㄒoㄒ)/~~
_wxyz
_wxyz
@罗罗罗写代码 不客气,上次为了爬妹子照片,才调研的66
下一页
0
罗罗罗写代码

引用来自“抽象派”的评论

建议直接获取文档的body内容!用如下方法:

String body = Jsoup.connect(url).ignoreContentType(true).execute().body();

谢谢大神,我修改为String intro1 = doc.body().html();获取body内容得到的结果:
<p><img src="http://venada-mall.img-cn-shanghai.aliyuncs.com/productIntro/93617533374177280/20160107/1452165039617.jpg" style="" title="1.jpg"></p>
<p><img src="http://venada-mall.img-cn-shanghai.aliyuncs.com/productIntro/93617533374177280/20160107/1452165039994.jpg" style="" title="2.jpg"><img src="http://venada-mall.img-cn-shanghai.aliyuncs.com/productIntro/93617533374177280/20160107/1452165040571.jpg" title="3.jpg" style="white-space: normal;"></p>
<p><br></p>
0
pseudo
pseudo

换parser吧,jsoup默认使用是htmlParser,它会对返回内容做些改动来符合html规范,所以一般实际使用时都用的是xmlParser,代码如下 

org.jsoup.Jsoup.parse(input, "", Parser.xmlParser())



罗罗罗写代码
回复 @pseudo : 谢谢大神,加了段代码就可以了
pseudo
pseudo
回复 @罗罗罗写代码 : 如果不想格式化可以试试在调用doc.html()前调用 doc.outputSettings().prettyPrint(false);
pseudo
pseudo
回复 @罗罗罗写代码 : 仔细看了下,你说是在断点里看到的,还以为是打印出来的呢。断点里看到的\n是换行符,你如果打印出来就变成直接的换行了。因为jsoup会对输入的文档做格式化,所以解析结果是根据html标签在需要的地方进行了换行。html代码格式化工具http://tool.oschina.net/codeformat/html就是根据这个实现的
罗罗罗写代码
按照您说的方法修改代码为: Document doc = Jsoup.parse(intro, "", Parser.xmlParser()); String intro1 = doc.body().html(); 还是会在<p>标签之间有\n
返回顶部
顶部