Используйте встроенное unichr
- BeautifulSoup не необходим:
>>> entity = 'ǎ'
>>> unichr(int(entity[3:],16))
u'\u01ce'
ActiveSupport добавляет метод to_xml
в Hash, поэтому вы можете довольно близко подойти к тому, что ищете, с помощью этого:
sudo gem install activesupport
require "active_support/core_ext"
my_hash = { :first_name => 'Joe', :last_name => 'Blow', :email => 'joe@example.com'}
my_hash.to_xml(:root => 'customer')
И в итоге получите:
<?xml version="1.0" encoding="UTF-8"?>
<customer>
<last-name>Blow</last-name>
<first-name>Joe</first-name>
<email>joe@example.com</email>
</customer>
Обратите внимание, что подчеркивания преобразованы в тире.
Если эти данные являются моделью, попробуйте переопределить to_xml
.
В противном случае Builder - хороший вариант.
Я бы посоветовал такой драгоценный камень, как XmlSimple , который предоставляет такие возможности.
Некоторое время назад я сделал короткую презентацию именно на эту тему в моем университете. Здесь слайды (интересная часть начинается на> = стр. 37)