我有一個包含HTML內容,如刪除空標籤對
"<p></p><div></div><p>Hello<br/>world</p><p></p>"
我想改變這個字符串,這樣的空標籤對被刪除(但空標籤,如<br/>
用戶提交的字符串保留)。例如,這種轉變的結果應該將字符串轉換上面
"<p>Hello<br/>world</p>"
我想使用JSoup要做到這一點,因爲我已經有這個在我的類路徑,這將是最簡單的我在服務器端執行此轉換。
我有一個包含HTML內容,如刪除空標籤對
"<p></p><div></div><p>Hello<br/>world</p><p></p>"
我想改變這個字符串,這樣的空標籤對被刪除(但空標籤,如<br/>
用戶提交的字符串保留)。例如,這種轉變的結果應該將字符串轉換上面
"<p>Hello<br/>world</p>"
我想使用JSoup要做到這一點,因爲我已經有這個在我的類路徑,這將是最簡單的我在服務器端執行此轉換。
這裏是舉例來說,做到這一點(使用JSoup):
String html = "<p></p><div></div><p>Hello<br/>world</p><p></p>";
Document doc = Jsoup.parse(html);
for (Element element : doc.select("*")) {
if (!element.hasText() && element.isBlock()) {
element.remove();
}
}
System.out.println(doc.body().html())
以上代碼的輸出是你在找什麼:
<p>Hello<br />world</p>
沒有真正熟悉jsoup,但你可以這樣做一個簡單的正則表達式替換:
String html = "<p></p><div></div><p>Hello<br/>world</p><p></p>";
html = html.replaceAll("<([^>]*)></\\1>", "");
雖然採用了全解析你很可能只是在加工過程中掉落空的內容,這取決於你在做什麼最終會去做。
的replaceAll(「<[A-ZA -Z0-9] *> [a-zA-Z0-9] *>「,」「);可能看起來比允許任何其他的更好> – 2012-01-09 04:12:00
但是斜體粗體?這不好用,但仍然合法。我需要能夠重新匹配第一組尖括號中使用的內容。 – FrankieTheKneeMan 2012-01-09 05:52:21
@PragalathanM,我認爲,但標籤也允許使用連字符,下劃線等。一旦你開始添加所有這些字符,該語句開始看起來很醜陋(你可能會錯過一些)。 – 2012-01-09 10:22:26
如果你正在使用jQuery,你可以不喜歡它
var tags = "<p></p><div></div><p>Hello<br/>world</p><p></p>";
$("<div id='mydiv'>"+tags+"</div>").appendTo($('body'));
$('#mydiv').children().each(function(){
var elem = $(this);
if(elem.html() === "") elem.remove();
});
'childrens'功能正在產生錯誤。 – 2012-01-03 11:17:23
更新了答案..請檢查,其工作正常我已經在我的機器上測試過。 – 2012-01-03 11:35:35
這將刪除所有空標籤,包括
–
2012-01-10 12:44:24
不知道Jsoup,下面的代碼也有簡單的JavaScript正則表達式的作品。 請嘗試下面的代碼。
function removeall(){
var tagarray=new Array("<p>","<div>");
source="<p></p><div></div><p>Hello<br/>world</p><p></p>";
for (var int = 0; int < tagarray.length; int++) {
tag2=tagarray[int].replace("<","</");
var tagpair=new RegExp(tagarray[int]+tag2,"g");
source=source.replace(tagpair,"");
}
alert(source);
}
Jsoup將來自用戶輸入HTML正確的XML。使用XML解析器來查找和刪除所有空標籤。我認爲這比regexp更好。看這裏:Java Remove empty XML tags 你也可以使用JSoup爲你找到空標籤。看看這裏:http://jsoup.org/cookbook/extracting-data/selector-syntax 並使用Node.remove()方法。
丁,丁,丁,我們有一個贏家! – 2012-01-10 14:31:57
我測試了它和上面打印'
你好
' – 2012-01-10 15:19:01世界代碼
我注意到,這個代碼刪除除淨內部的空餘IMG:
所以我空尺寸檢查也:element.childNodes()&&尺寸( )== 0,我的更新是否正確? – 2014-11-12 07:51:45