繁体   English   中英

rexml 和 nokogiri XML 解析

[英]rexml and nokogiri XML parsing

有人可以在下面的代码中解释为什么 Nokogiri 和 REXML 输出存在差异。

require 'rubygems'
require 'Nokogiri'
require 'rexml/document'

xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
<yml>
<a>TM and &#xA9; 2009</a>
</yml>"

puts 'nokogiri'
doc = Nokogiri::XML(xml)
puts doc.to_s, "\n"

puts 'rexml'
doc = REXML::Document.new(xml)
puts doc.to_s

输出:

nokogiri
<?xml version="1.0" encoding="ISO-8859-1"?>
<yml>
<a>TM and ? 2009</a>
</yml>

rexml
<?xml version='1.0' encoding='ISO-8859-1'?>
<yml>
<a>TM and &#xA9; 2009</a>
</yml>

当然,nokogiri 正在使用 ISO-8859-1 转换文本,而 rexml 只是输出您输入的内容。如果您将 XML 更改为 utf-8 编码,那么您将得到:

nokogiri:
<?xml version="1.0" encoding="utf-8"?>
<yml>
<a>TM and © 2009</a>
</yml>

rexml:
<?xml version='1.0' encoding='UTF-8'?>
<yml>
<a>TM and &#xA9; 2009</a>
</yml>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM