如何使用[Nokogiri中的%特殊字符

问题描述 投票:3回答:1

我正在Rails中使用Nokogiri解析我的HTML,并将自闭合标签转换为常规标签。效果很好,但是它也可以转换我们的模板标签[%%],例如:

html = "<a href='[% hello %]'>Hello from [% Us %]</a>"
Nokogiri::HTML::DocumentFragment.parse(html).to_html

将转换为:

<a href='%5B%%20hello%20%%5D'>Hello from [% Us %]</a>

如何在转换后不使用gsub的情况下避免这种情况?

这没有帮助:

html = "<a href='[% hello %]'>Hello from [% Us %]</a>"
doc = Nokogiri::HTML::Document.new
doc.encoding = 'UTF-8'
doc.fragment(html).to_html
#=> "<a href=\"%5B%%20hello%20%%5D\">Hello from [% Us %]</a>" 
ruby-on-rails ruby nokogiri
1个回答
1
投票

@@ anothermh实际上回答了我的问题(请参阅我的问题下面的评论)。我最终使用了他的建议(to_xml

但是,我在代码解析中需要的比我决定不提的要多。我需要能够将特殊字符保留在标签中,还需要将自动关闭的标签转换为常规标签。

我的解决方案是使用XHTML格式,在这里描述:https://www.rubydoc.info/github/sparklemotion/nokogiri/Nokogiri/XML/Node/SaveOptions#FORMAT-constant

html = "... my html ..."    
doc = Nokogiri::HTML::Document.new
doc.encoding = 'UTF-8'
final = doc.parse(html).to_xml(:save_with => Nokogiri::XML::Node::SaveOptions::DEFAULT_XHTML)
© www.soinside.com 2019 - 2024. All rights reserved.