`
zqb666kkk
  • 浏览: 732655 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

java jsoup 解析字符串默认加了“/n”符号的处理

 
阅读更多
/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str="<p>供应t1紫<a href='http://www.cncu.cn' target='_blank'>铜</a>板、<a href='http://www.cncu.cn/product/tjthj_ct_zt/' target='_blank'>紫铜</a>带,质量很优质,欢迎新老客户前来采购。</p><p><a href='http://www.cncu.cn/product/tjthj_qt/ ' target='_blank'>紫铜带</a>用途:高纯度,组织细密,含氧量极低。无气孔、沙眼、疏松,导电性能极佳,电蚀出的模具表面精度高,经热处理工艺,电极无方向性,适合精打,细打,具有良好的热电道性、加工性、延展性、防蚀性及耐候性等。有良好的导电、导热、耐蚀和加工性能,可以焊接和钎焊 的<br /></p>";
		//System.out.println(processContentTest(str));
		//String str="<p>供应t1紫<a href='http://www.cncu.cn' target='_blank'>铜</a>";
		System.out.println("--------------------------------");
		System.out.println(RemoveImgAcontent(str));
	}
	public static String RemoveImgAcontent(String initcontent){
		Pattern p = Pattern.compile("</?(A|a)(\n|.)*?>");
		//Document doc = Jsoup.parseBodyFragment(initcontent); // or Jsoup.parse(...);
		Document doc = Jsoup.parseBodyFragment(initcontent);
		Elements images = doc.select("img");

		
		for(Element image : images){
			
			String altStr=image.attr("alt");
			Matcher m1 = p.matcher(altStr);
			altStr = m1.replaceAll("");
			//image.removeAttr("alt");
			image.attr("alt", altStr);
			
			String titleStr=image.attr("title");
			Matcher m2 = p.matcher(titleStr);
			titleStr = m2.replaceAll("");
			//image.removeAttr("title");
			image.attr("title", titleStr);
		}


		String endcontent=doc.select("body").html();
		return endcontent;
	}



如上例所示 默认解析后生成的内容 中会加上/n符号

看图 做对比
解析前



解析后:



看到没多了一个 /n
查看jsoup的源码 调试后发现 是
package org.jsoup.nodes;
....
void outerHtmlHead(StringBuilder accum, int depth, Document.OutputSettings out) {
        String html = Entities.escape(getWholeText(), out);
        if (out.prettyPrint() && parent() instanceof Element && !Element.preserveWhitespace((Element) parent())) {
            html = normaliseWhitespace(html);
        }

        if (out.prettyPrint() && ((siblingIndex() == 0 && parentNode instanceof Element && ((Element) parentNode).tag().formatAsBlock() && !isBlank()) || (out.outline() && siblingNodes().size()>0 && !isBlank()) ))
            indent(accum, depth, out);
        accum.append(html);
    }


源码中 该方法里的indent方法

/**
     * 
     * @param accum
     * @param depth
     * @param out
     */
    protected void indent(StringBuilder accum, int depth, Document.OutputSettings out) {
           	accum.append("\n").append(StringUtil.padding(depth * out.indentAmount()));
    }


就是这个方法加的
看了 他的逻辑

 if (out.prettyPrint() && ((siblingIndex() == 0 && parentNode instanceof Element && ((Element) parentNode).tag().formatAsBlock() && !isBlank()) || (out.outline() && siblingNodes().size()>0 && !isBlank()) ))



out.prettyPrint() 应该是是否格式化 ,看了她的方法发现默认就是true的,
siblingIndex() 大概意思是 判断是否根节点之类的 意思

parentNode instanceof Element 大概是判断是否符合element格式


!isBlank()是判断不等于空

几个条件都是true  加起来就进入了 调用indent方法

要想不让jsoup默认给我的字符串加入 /n
我的解决办法是 直接注释 indet方法的实现 让它变成一个空壳方法

这个不是很完美,但是能解决问题

最完美的方案是 能够重写 该indent方法

可惜我还不清楚如何重写

顺便说下 我是从官网 把jsoup的源码下载下来解压到项目进行研究
这是jsoup官网 源码包下载地址 :http://jsoup.org/download




  • 大小: 42.6 KB
  • 大小: 71.7 KB
0
0
分享到:
评论

相关推荐

    JAVA jSOUP解析html

    - **解析文档**:调用`get()`方法获取HTML字符串,然后使用`Jsoup.parse(html)`解析为`Document`对象。 - **选择元素**:使用CSS选择器选择文档中的元素,如`doc.select("selector")`。 - **操作元素**:获取元素...

    源码_Jsoup 解析实时/7天/15天内 全国各城市天气

    自学jsoup编程,写的第一个抓取程序,参考了一些网络的资料,有些很有用, 向原作者致谢! 打包时将最新版的jsoup包和jsoup源码包都打进去了,下载解压后和程序放在同一目录马上就能运行。 使用对象: 需要懂一点...

    jsoup在java中解析dom

    jsoup在java代码中高效解析html字符串为dom结构,并可实现对dom结构的灵活操作,特别适合移动端返回字段为html形式的解析过滤处理

    Jsoup解析网址与浏览器查看内容不一致

    在进行Web抓取或网页解析时,我们常常会遇到Jsoup解析结果与浏览器显示内容不一致的情况。这主要是由于服务器端根据不同的用户代理(User-Agent)来判断访问者使用的设备类型,从而提供相应的页面版本。例如,如果你...

    使用Jsoup解析html网页

    Jsoup是一款Java库,它为了解析、提取以及操作HTML提供了强大的工具。在Web开发中,我们常常需要处理各种HTML文档,比如抓取网页数据、自动化测试或是构建爬虫。Jsoup以浏览器的方式解析HTML,使得我们可以方便地...

    Jsoup解析html中文文档

    - **官网地址**:[http://www.open-open.com/jsoup/](http://www.open-open.com/jsoup/) - **Cookbook**:官方提供的指南详细介绍了jsoup的使用方法。 #### 四、入门教程 ##### 1. 解析和遍历HTML文档 解析HTML...

    用Jsoup解析html的所有jar包

    Jsoup是一款非常强大的Java库,专门用于处理HTML文档,提供了丰富的API来抓取、解析、修改和输出HTML内容。在Java开发中,如果你需要从网页上提取数据或者进行Web抓取,Jsoup是一个理想的选择。这个压缩包文件“用...

    httpClient采集jsoup解析

    HttpClient和Jsoup是Java开发中常用的两个库,用于网络数据采集和HTML解析。HttpClient提供了强大的HTTP客户端服务,而Jsoup则是一个优秀的库,用于处理和理解HTML文档结构。本篇文章将深入探讨这两个库的使用方法...

    Jsoup库文件;Jsoup解析Java包

    Jsoup是一款强大的Java库,专为处理HTML文档而设计,同时也支持XML解析。它提供了简单易用的API,使得开发者可以方便地抓取、解析、修改以及清理HTML内容。Jsoup能够模拟浏览器的行为,理解HTML文档的结构,并通过...

    Jsoup解析html+xml

    Jsoup是一款非常强大的Java库,专门用于处理HTML和XML文档,提供了一系列简洁的API来抓取、解析、修改以及格式化这些文档。在现代Web开发中,数据抓取和网页解析是常见需求,Jsoup凭借其高效且易用的特性,成为...

    java+jsoup解析help

    用java+jsoup解析api本地帮助文档的一些实例,实测java1.6 html格式的API可用(对于一个学习java已有N年,但却一直停留在“曾经学过”的阶段人来说,java确实有其难处,类库相对较多。我最初设计目的是想要解析帮助...

    java html解析 工具jsoup和一个简单例子

    Java HTML解析工具Jsoup是一个强大的库,专门设计用于处理HTML文档,提取和操作数据。它提供了类似于DOM、CSS以及jQuery的API,使得在Java中处理HTML变得简单易行。Jsoup能够连接到网页,下载HTML内容,然后进行解析...

    jsoup基于java爬虫项目

    jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 Jsoup的主要功能 1)从一个URL,文件或字符串中...

    jsoup Java HTML解析器

    1. **HTML解析**:jsoup能够解析HTML字符串或从URL加载页面,将HTML转换为一个复杂的DOM结构,就像浏览器所做的那样。这个DOM可以被用来遍历和查找元素,或者进行进一步的操作。 2. **DOM操作**:jsoup提供了类似于...

    Java爬虫Jsoup+httpclient获取动态生成的数据

    本文主要讲述如何利用Java编程语言中的Jsoup库和HttpClient工具包来获取和解析动态生成的数据,特别是那些通过JavaScript动态加载的数据。 ### Java爬虫基础 Java爬虫是指使用Java语言编写的一类程序,这些程序...

    android使用jsoup 解析html文件

    使用`Jsoup.parse()`方法解析HTML字符串,得到一个`Document`对象,表示整个HTML文档的结构: ```java Document document = Jsoup.parse(htmlContent); ``` 3. **选择和操作HTML元素** `jsoup`提供了丰富的...

    jsoup解析xml文件

    jsoup的核心类是`org.jsoup.Jsoup`,它提供了从字符串、URL或文件加载HTML或XML文档的方法。例如,要解析XML文件,我们可以使用`Jsoup.parse()`方法,传入XML文件的路径: ```java import org.jsoup.Jsoup; import ...

    jsoupAPI解析html

    1. **解析HTML**:`Jsoup.parse(String html)`方法用于从字符串解析HTML,`Jsoup.parse(String url, String charset)`则可以从URL获取HTML并解析。 2. **选择元素**:`select(String selector)`方法是jsoup的核心,...

    jsoup Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容

    1. **HTML解析**:jsoup能够解析HTML文档,无论是从一个URL加载还是直接提供HTML字符串。它使用了最新的HTML5规范,可以处理不规范的HTML代码,确保在解析过程中保持数据的完整性。 2. **DOM操作**:jsoup提供了...

    Jsoup解析html的示例

    Jsoup是一款Java库,它为了解析、提取以及操作HTML提供了强大的功能。在Android开发中,Jsoup尤其有用,因为它能够帮助开发者从网页中提取结构化数据,这对于网络爬虫或者任何需要从网页获取信息的应用来说是至关...

Global site tag (gtag.js) - Google Analytics