使用jsoup解析HTML并保留原始内容
问题描述:
我想替换HTML文件中的某些元素,并保持所有其他内容不变。使用jsoup解析HTML并保留原始内容
Document doc = Jsoup.parse("<div id=title>Old</div >\n" +
"<p>1<p>2\n" +
"<table><tr><td>1</td></tr></table>");
doc.getElementById("title").text("New");
System.out.println(doc.toString());
我期望有以下的输出:
<div id=title>New</span></div >
<p>1<p>2
<table><tr><td>1</td></tr></table>
相反,我有:
<html>
<head></head>
<body>
<div id="title">New</div>
<p>1</p>
<p>2 </p>
<table>
<tbody>
<tr>
<td>1</td>
</tr>
</tbody>
</table>
</body>
</html>
Jsoup补充说:
- 关闭p标签
- DOUB LE-引号的属性值
- TBODY
- HTML,头部和身体的元素
我可以连载修改HTML回原来的? Jericho这样做,但它并不像Jsoup那样提供精巧的DOM操作方法。
答
对于其他点试试这个:
final String html = "<div id=title>Old</div >\n"
+ "<p>1<p>2\n"
+ "<table><tr><td>1</td></tr></table>";
Document doc = Jsoup.parse(html);
doc.select("[id=title]").first().text("New");
doc.select("body, head, html, tbody").unwrap();
doc.outputSettings().prettyPrint(false);
System.out.println(doc);
你可以做,如果JSoup会给你的元素的字符偏移量。请参阅http://stackoverflow.com/questions/11387458/get-character-offsets-for-elements-in-jsoup。我们需要这个功能。不幸的是,JSoup的作者不再回复发布到jsoup google小组的问题。 – ccleve