回程(在Windows新行中使用)被nokogiri替换为
xml = Nokogiri::XML "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<a>ABC</a>\n"
xml.xpath('a').first.content = "testing\r\nnewlines"
> "testing\r\nnewlines"
xml.to_s
> "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<a>testing \nnewlines</a>\n"
1)为什么Nokogiri会这样做?
2)有没有办法避免这样做?
答案 0 :(得分:1)
这是因为libxml2上的错误在错误地转义\r
时不应该这样做,因为它是一个有效的XML值。
此处有更多信息
https://github.com/sparklemotion/nokogiri/issues/1356
我现在能看到的唯一解决方案是
.gsub(" ", "\r")
答案 1 :(得分:0)
编码可能是问题所在。它将\ r \ n转换为HTML代码。
尝试将编码设置为其中一种格式
doc = Nokogiri.XML('',nil,'EUC-JP')
doc = Nokogiri.XML('',nil,'windows-1252')
doc = Nokogiri.XML('',nil,'ISO-8859-1')
参考:http://www.nokogiri.org/tutorials/parsing_an_html_xml_document.html