我正在使用Nokogiri进行一些HTML处理。我在使用角撑时遇到了一些问题。
这是我的代码:
content = "Testing angular braces with some <random content>"
parsed_html = Nokogiri::HTML.fragment(content)
p parsed_html.inner_html
输出为
"Testing angular braces with some <random content></random>"
显然,我不希望出现那些</random>
结束标记。
我如何才能跳过那些带大括号的内容。内容可能也包含HTML元素。
如果您的字符串是嵌入了<
和>
的文本,但它们并没有包围实际的HTML标记,那么您需要对它们进行HTML编码。Nokogiri假设这些是真实的标记,并将进行修复以关闭标记并生成相对正确的标记。
require 'htmlentities'
require 'nokogiri'
html_encoder = HTMLEntities.new
content = html_encoder.encode("Testing angular braces with some <random content>")
# => "Testing angular braces with some <random content>"
parsed_html = Nokogiri::HTML.fragment(content)
puts parsed_html.to_html
# >> Testing angular braces with some <random content>
如果您同时拥有HTML标记和伪标记,那么您的任务将变得更加困难,因为您必须对HTML标记进行预处理,并将其更改为其他分隔符,运行编码,然后重新处理文本,将HTML标记分隔符返回到应有的值,然后使用Nokogiri对其进行解析。
如何做到这一点留给读者练习,因为这是一个完全不同的问题。