在Ruby中解码xml实体?

在Ruby中解码xml实体?,ruby,Ruby,这个问题的答案似乎比它真正应该的更难以捉摸 我有以下ruby,将XML字符串编码为其XML实体形式: irb> "<hi>".encode("UTF-8", :xml => :text) => "&lt;hi&gt;" irb>“”.encode(“UTF-8”,:xml=>:text) =>“你好” 将上述结果解码回的最佳方法是什么 AFAICT在字符串上没有撤消字符串#编码结果的方法

这个问题的答案似乎比它真正应该的更难以捉摸

我有以下ruby,将XML字符串编码为其XML实体形式:

irb> "<hi>".encode("UTF-8", :xml => :text)
=> "&lt;hi&gt;"
irb>“”.encode(“UTF-8”,:xml=>:text)
=>“你好”
将上述结果解码回
的最佳方法是什么


AFAICT在字符串上没有撤消字符串#编码结果的方法。我已经看到
CGI.unescapeHTML
解决了我的任务,但我正在寻找一种更“正确”的字符串编码模拟方法。

是的,内置对应物并不存在。如果输入的编码保证为UTF-8(或ASCII兼容),则可以调用
String#gsub
撤消
&
/
&
/
转换。否则,复制
CGI.unescapethtml
,将其添加到新方法(例如
xml\u text\u unescape
)中,然后删除所有不相关的内容。