Có cụm từ thông dụng nào có thể xóa hoàn toàn thẻ HTML không? Nhân tiện, tôi đang sử dụng Java.Cách xóa thẻ HTML trong Java
Trả lời
Thay vào đó, bạn nên sử dụng trình phân tích cú pháp HTML. Tôi thích htmlCleaner, vì nó mang lại cho tôi phiên bản HTML được in đẹp mắt.
Với htmlCleaner bạn có thể làm:
TagNode root = htmlCleaner.clean(stream);
Object[] found = root.evaluateXPath("//div[id='something']");
if(found.length > 0 && found instanceof TagNode) {
((TagNode)found[0]).removeFromTree();
}
Cảm ơn bạn đã chỉ cho tôi tới htmlCleaner :) – exhuma
Chúng tôi có cần bất kỳ thư viện nào để sử dụng mã trên không? Và root.evaluateXPath ("// div [id = 'something']"); trong "cái gì đó" này có thể là nghi thức id? làm ơn cho tôi biết. thanks –
số biểu thức chính quy không có thể bằng HTML định nghĩa phân tích cú pháp.
Bạn có thể sử dụng regex đến s/<[^>]*\>//
hoặc thứ gì đó ngây thơ như vậy nhưng sẽ không đủ, đặc biệt nếu bạn quan tâm đến việc xóa nội dung của thẻ.
Khi một người đăng khác nói, hãy sử dụng trình phân tích cú pháp HTML thực tế.
Nếu bạn chỉ cần loại bỏ các thẻ sau đó bạn có thể sử dụng biểu thức chính quy này:
content = content.replaceAll("<[^>]+>", "");
Nó sẽ loại bỏ chỉ thẻ, nhưng không phải thứ HTML khác. Đối với những điều phức tạp hơn, bạn nên sử dụng phân tích cú pháp.
EDIT: Để tránh các vấn đề với HTML bình luận của bạn có thể làm như sau:
content = content.replaceAll("<!--.*?-->", "").replaceAll("<[^>]+>", "");
Vì bạn không sử dụng bất kỳ ký tự thịt '.','^'và' $ ', các cờ' s'- và 'm' có thể được bỏ qua. –
Regex này chịu trách nhiệm gây xâu chuỗi nếu HTML chứa nhận xét XML có các ký tự '<' or '>' được nhúng. –
Ngoài ra, nếu mục đích của bạn là để hiển thị người dùng kiểm soát đầu vào lại cho khách hàng, sau đó bạn cũng có thể chỉ cần thay thế tất cả <
bởi <
và tất cả >
theo >
. Bằng cách này, HTML sẽ không được hiểu là do ứng dụng của khách hàng (trình duyệt web).
Nếu bạn đang sử dụng JSP làm công nghệ xem, thì bạn có thể sử dụng JSTL's c:out
cho việc này. Nó sẽ thoát khỏi tất cả các thực thể HTML theo mặc định. Vì vậy, ví dụ:
<c:out value="<script>alert('XSS');</script>" />
sẽ KHÔNG hiển thị cảnh báo, nhưng chỉ hiển thị chuỗi thực tế.
bạn có thể sử dụng mã đơn giản này để loại bỏ tất cả các thẻ html ...
htmlString.replaceAll("\\<.*?\\>", ""))
Thao tác này sẽ chỉ xóa thẻ mở và để thẻ đóng bị hủy. – jlordo
Tôi sẽ không bao giờ làm một công việc như vậy - phân tích cú pháp html thành văn bản thuần túy thực sự là công việc mặc dù .. – jebbie
Nó làm việc cho tôi nhưng có thể phụ thuộc vào độ phức tạp của thẻ, chú thích, tập lệnh, v.v. cho một trường hợp phức tạp có thể là một thư viện html nên được tốt hơn. – jmoran
Có JSoup mà là một thư viện java làm cho thao tác HTML. Nhìn vào phương pháp clean()
và đối tượng WhiteList
. Dễ sử dụng giải pháp!
WOW, thưa bạn, thực sự làm cho ngày của tôi, tôi thích điều đó, CÓ! Markdownj, Markdown4J, htmlCleaner .. tất cả trong số họ là ***** xin lỗi .. JSoup là một và chỉ nơi bạn thực sự đạt được điều đó với một lớp lót: Chuỗi plain = new HtmlToPlainText(). GetPlainText (Jsoup.parse (html)); – jebbie
Mã ngắn hơn sẽ là 'Chuỗi văn bản thuần túy = Jsoup.parse (html) .text();' – jrarama
@jrarama - Không hề. 'Jsoup.parse (html) .text()' xóa tất cả các thẻ và khoảng trống, để lại cho bạn một dòng văn bản dài duy nhất, trong khi 'new HtmlToPlainText(). GetPlainText (Jsoup.parse (html))' định dạng văn bản một cách đơn giản, giữ ngắt dòng, đoạn văn, dấu đầu dòng, v.v. – isapir
Bạn không cần bất kỳ trình phân tích cú pháp HTML nào. Mã dưới đây loại bỏ tất cả các bình luận HTML:
htmlString = htmlString.replaceAll("(?s)<!--.*?-->", "");
- 1. xóa thẻ html khỏi chuỗi bằng cách sử dụng java
- 2. Xóa một số thẻ HTML bằng RegExp và Java
- 3. Xóa thuộc tính Jsoup trên thẻ html
- 4. Xóa thuộc tính của thẻ HTML
- 5. Xóa các thẻ html trong sed hoặc tương tự
- 6. xóa các thuộc tính nhất định khỏi các thẻ HTML
- 7. sử dụng python, Xóa thẻ HTML/định dạng khỏi chuỗi
- 8. chèn/xóa nội dung HTML giữa các thẻ div
- 9. DOMDocument xóa thẻ tập lệnh khỏi nguồn HTML
- 10. Xóa tất cả thẻ javascript và thẻ kiểu từ html bằng python và mô-đun lxml
- 11. Thẻ gắn thẻ HTML với thẻ nghiêng
- 12. Thẻ html bên trong javascript
- 13. Conditional Formatting trong HTML Thẻ
- 14. Thẻ HTML để ngăn thẻ HTML được thực thi?
- 15. Cách xóa cờ trong Java
- 16. Xóa thẻ html trừ các thẻ <br> hoặc <br/> bằng javascript
- 17. android java lấy thẻ hình ảnh html từ chuỗi
- 18. Tôi làm cách nào để xóa các thẻ HTML khỏi chuỗi ColdFusion?
- 19. Cách lấy nội dung của thẻ HTML?
- 20. Xóa HTML người dùng trong .net
- 21. Trim HTML trống thẻ
- 22. Tôi làm cách nào để xóa thuộc tính khỏi thẻ html?
- 23. Làm tổ thẻ HTML-anchor
- 24. Phím xóa lùi không xóa các thẻ html bên trong của một DIV có thể chỉnh sửa được trong Firefox
- 25. Thẻ HTML trống
- 26. Xóa tất cả các thẻ html khỏi các thuộc tính trong đường ray
- 27. Cách thực hiện thụt lề trong thẻ html li li
- 28. Cách thêm id html vào thẻ form_for trong đường ray?
- 29. Làm cách nào để xóa thẻ khỏi chuỗi trong python bằng cụm từ thông dụng? (KHÔNG phải trong HTML)
- 30. Cách tìm nạp HTML trong Java
Gõ tiêu đề của bạn vào hộp tìm kiếm, tôi đã nhận như sau: http://stackoverflow.com/search?q=How+to+remove+HTML+tag + trong + Java ... bạn đã không nhận được như vậy trong khi bạn đã đăng câu hỏi? – kdgregory
Tôi không tìm thấy bản sao nào. Những câu hỏi này quan tâm đến việc trích xuất văn bản từ HTML: http://stackoverflow.com/questions/240546/removing-html-from-a-java-string http: // stackoverflow.com/questions/832620/stripping-html-tags-in-java – tangens