rexml 和 nokogiri XML 解析

发布于 2024-11-14 18:22:07 字数 669 浏览 2 评论 0原文

有人可以解释一下为什么下面的代码中 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>

Can someone please explain why there is a difference in Nokogiri and REXML outputs in the code below.

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

xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
<yml>
<a>TM and © 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

outputs:

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 © 2009</a>
</yml>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝天白云 2024-11-21 18:22:07

当然,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 © 2009</a>
</yml>

Sure, nokogiri is converting the text using ISO-8859-1, whereas rexml is just outputting what you put in. If you change the XML to utf-8 encoding then you'll get:

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 © 2009</a>
</yml>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文