回车更换为
由nokogiri

时间:2017-10-16 05:13:36

标签: ruby nokogiri

回程(在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&#13;\nnewlines</a>\n"

1)为什么Nokogiri会这样做?

2)有没有办法避免这样做?

2 个答案:

答案 0 :(得分:1)

这是因为libxml2上的错误在错误地转义\r时不应该这样做,因为它是一个有效的XML值。

此处有更多信息

https://github.com/sparklemotion/nokogiri/issues/1356

我现在能看到的唯一解决方案是

.gsub("&#13;", "\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