XML-анализ rexml и nokogiri - PullRequest
       17

XML-анализ rexml и nokogiri

1 голос
/ 09 июня 2011

Может кто-нибудь объяснить, почему существует разница в выходных данных 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>

1 Ответ

1 голос
/ 09 июня 2011

Конечно, 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>
...