Vì bạn chưa cung cấp bất kỳ HTML mẫu hoặc đầu ra mong muốn, đây là một giải pháp chung:
Bạn có thể chọn comments SGML trong XPath bằng thử nghiệm comment()
nút; bạn có thể tách chúng ra khỏi tài liệu bằng cách gọi .remove
trên tất cả các nút nhận xét. Minh họa:
require 'nokogiri'
doc = Nokogiri.XML('<r><b>hello</b> <!-- foo --> world</r>')
p doc.inner_html #=> "<b>hello</b> <!-- foo --> world"
doc.xpath('//comment()').remove
p doc.inner_html #=> "<b>hello</b> world"
Lưu ý rằng sẽ thay đổi trên tài liệu triệt tiêu để loại bỏ các ý kiến. Nếu bạn muốn giữ lại các tài liệu gốc chưa sửa đổi, bạn có cách khác có thể làm điều này:
class Nokogiri::XML::Node
def inner_html_reject(xpath='.//comment()')
dup.tap{ |shadow| shadow.xpath(xpath).remove }.inner_html
end
end
doc = Nokogiri.XML('<r><b>hello</b> <!-- foo --> world</r>')
p doc.inner_html_reject #=> "<r><b>hello</b> world</r>"
p doc.inner_html #=> "<r><b>hello</b> <!-- foo --> world</r>"
Cuối cùng, lưu ý rằng nếu bạn không cần phải đánh dấu, chỉ hỏi cho text
bản thân không bao gồm ý kiến HTML:
p doc.text #=> "hello world"
Vui lòng cung cấp đoạn mã HTML mẫu và chuỗi kết quả bạn muốn sau khi xoa bóp. – Phrogz
tôi chỉ cần xóa các nhận xét HTML như "" từ html của tôi. Tôi đã sử dụng dải và nó hoạt động. Tôi không biết nếu điều này là đúng cách mặc dù. – Maverick