在你解析一个Document之后可能想修改其中的某些属性值,然后再保存到磁盘或都输出到前台页面。
可以使用属性设置方法 Element.attr(String key, String value)
, 和 Elements.attr(String key, String value)
.
假如你需要修改一个元素的 class
属性,可以使用 Element.addClass(String className)
和Element.removeClass(String className)
方法。
Elements
提供了批量操作元素属性和class的方法,比如:要为div中的每一个a元素都添加一个rel="nofollow"
可以使用如下方法:
@Test public void setAttr(){ String html = "<div class=comments><a>1</a><a>2</a></div>"; Document doc =Jsoup.parse(html); doc.select("div.comments a").attr("rel", "nofollow"); System.out.println(doc); }
与Element
中的其它方法一样,attr
方法也是返回当 Element
(或在使用选择器是返回 Elements
集合)。这样能够很方便使用方法连用的书写方式。比如:
doc.select("div.masthead").attr("title", "jsoup").addClass("round-box");
设置一个元素的HTML内容
你需要一个元素中的HTML内容
可以使用Element
中的HTML设置方法具体如下:
@Test public void setHtml(){ String html = "<span></span><div class=comments><a>1</a><a>2</a></div>"; Document doc =Jsoup.parse(html); Element div = doc.select("div").first(); // <div></div> div.html("<p>lorem ipsum</p>"); // <div><p>lorem ipsum</p></div> div.prepend("<p>First</p>");//在div前添加html内容 div.append("<p>Last</p>");//在div之后添加html内容 System.out.println(doc); Element span = doc.select("span").first(); // <span>One</span> span.wrap("<li><a href='http://example.com/'></a></li>"); System.out.println(doc); }
Element.html(String html)
这个方法将先清除元素中的HTML内容,然后用传入的HTML代替。Element.prepend(String first)
和Element.append(String last)
方法用于在分别在元素内部HTML的前面和后面添加HTML内容Element.wrap(String around)
对元素包裹一个外部HTML内容。
设置元素的文本内容
你需要修改一个HTML文档中的文本内容
可以使用Element
的设置方法:
@Test public void setText(){ String html = "<span></span><div class=comments><a>1</a><a>2</a></div>"; Document doc =Jsoup.parse(html); Element div = doc.select("div").first(); // <div></div> div.text("5 > 4"); div.prepend("First"); div.append("Last"); System.out.println(div); }
文本设置方法与 HTML setter 方法一样:
Element.text(String text)
将清除一个元素中的内部HTML内容,然后提供的文本进行代替Element.prepend(String first)
和Element.append(String last)
将分别在元素的内部html前后添加文本节点。
对于传入的文本如果含有像 <
, >
等这样的字符,将以文本处理,而非HTML。