以下是我最终需要的特定XML:

<?xml version="1.0" encoding="UTF-8"?>
<customer>
  <email>joe@example.com</email>
  <first_name>Joe</first_name>
  <last_name>Blow</last_name>
</customer>

但是假设我有一个控制器(Ruby on Rails),它将数据发送到一个方法.我更喜欢以散列形式发送,如下所示:

:first_name => 'Joe',
:last_name => 'Blow',
:email => 'joe@example.com'

那么,如何将哈希转换为XML格式呢?

推荐答案

ActiveSupport为哈希添加了一个to_xml方法,因此您可以通过以下方法非常接近所需内容:

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>

请注意,下划线被转换为破折号.

Ruby-on-rails相关问答推荐

Rails 7.1解决冲突的Zeitwerk Inflection规则

未捕获语法错误:try 编辑TRIX时,请求的模块未在Rails 7.1中提供名为默认的导出(在youtube.js:1:8)

发送不调用类或模块中的私有方法

如何使用继承类 (STI) 获取 Ruby on Rails 类中基类的实例

`ActionController::API` 祖先类在加载后不会更新

Rails 7 共享刺激控制器功能

ActiveRecord 回调列表

如何在两个日期之间生成随机日期和时间?

twitter bootstrap下拉突然不起作用

如何在 Ruby on Rails 中的 cookie 上设置 HttpOnly 标志

bundle和gem安装的区别?

单击表格行(使用 bootstrap 程序)时,如何使用模式显示数据?

RubyMine - 关闭在空行中间单击的功能

rails 4 before_validation on: :create 或 on: :save

控制器 helper_method

Mongoid OR 查询语法

向 Rails 模型添加外键

Rails:在 link_to 中保留 GET 查询字符串参数

没有路由匹配缺少必需的键:[:id]

Ruby/Rails CSV 解析,UTF-8 中的无效字节序列