从“to_xml”以root身份删除<hash>标记

时间:2017-11-21 10:05:32

标签: ruby-on-rails ruby ruby-on-rails-4

我正在尝试将哈希转换为xml。所以,我正在使用Hash.to_xml。但是,它添加了<hash>标记作为根

一个简单的例子:

> {a: "1", b: {c: "2"}}.to_xml

给出

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<hash>
  <d>
    <a>1</a>
    <b>
      <c>2</c>
    </b>
  </d>
</hash>

但是,我不希望<hash>标记为root。

DOC说,它可以通过 root 进行配置。所以,我试过

{d: {a: "1", b: {c: "2"}}}.to_xml(root: "")

但是,这会给出一个空<>而不是<hash>

注意:在我的实际哈希中,我总是有一个根密钥。就像在上面的例子中一样,我将它作为 d 。但是,我不知道它是动态的

2 个答案:

答案 0 :(得分:0)

看起来不太好,但是

h = {d: {a: "1", b: {c: "2"}}}

h[h.keys.first].to_xml(root: h.keys.first)

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<d>
    <a>1</a>
    <b>
        <c>2</c>
    </b>
</d>

答案 1 :(得分:0)

好的,我明白了。因为,我总是有一个根密钥,我可以这样做:

示例

hash = {d: {a: "1", b: {c: "2"}}}
root = hash.keys.first

xml = hash[root].to_xml(root: root)

它会输出:

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<d>
  <a>1</a>
  <b>
    <c>2</c>
  </b>
</d>