部分问题是,您的 XML 是非法的。<br>
未终止;它应该是<br/>
XML 格式,或者有一个结束标记,即</br>
.
因此,Nokogiri 在尝试解析 XML 时会引发错误。如果您errors
在解析后检查该方法,您会看到如下内容:
[
#<Nokogiri::XML::SyntaxError: Premature end of data in tag br line 7>,
#<Nokogiri::XML::SyntaxError: Premature end of data in tag br line 7>,
#<Nokogiri::XML::SyntaxError: Premature end of data in tag br line 6>,
#<Nokogiri::XML::SyntaxError: Premature end of data in tag br line 6>,
#<Nokogiri::XML::SyntaxError: Premature end of data in tag en-note line 5>
]
修复它,Nokogiri 将能够正确处理 XML。那时,您将能够做一些简单的事情,例如:
require 'nokogiri'
doc = Nokogiri::XML(<<EOT)
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml.dtd\">
<en-note>
<font size=\"5\">text_part_1</font><br/><br/>
<font size=\"5\">text_part_2</font><br/><br/>
<font size=\"5\">text_part_3</font>
EOT
doc.search('br').each do |br|
br.replace('##br##')
end
text = doc.content.gsub('##br##', '<br/>')
puts text
这是带有更正br
标签的输出:
text_part_1<br/><br/>
text_part_2<br/><br/>
text_part_3
修复 XML 的最简单方法是在解析之前运行一些清理代码,例如:
doc = Nokogiri::XML(xml.gsub('<br>', '<br/>'))
xml
包含您的 XML 内容的变量在哪里。