我为我们使用的供应商(拒绝阅读JSON)设置了一个简单的XML提要。
<recipes type="array">
<recipe>
<id type="integer">1</id>
<name>
Hamburgers
</name>
<producturl>
http://test.com
</producturl>
...
</recipe>
...
<recipe>但是,供应商请求id不是id节点,而是父节点中的一个属性。例如:
<recipes type="array">
<recipe id="1">
<name>
Hamburgers
</name>
<producturl>
http://test.com
</producturl>
...
</recipe>
...
<recipe>我是用(基本上)
xml_feed = []
recipes.each do |recipe|
xml_feed <<{id: recipe.id, name: recipe.name, ...}
end
...
render xml: xml_feed.to_xml(root: 'recipes')但我不知道如何将id (或任何字段)作为属性包含在父节点中,就像这样。我搜索了一下,找不到任何东西,http://api.rubyonrails.org/classes/ActiveRecord/Serialization.html文档也没有多大帮助
谢谢!
发布于 2014-03-07 17:41:18
我建议你使用诺科吉里宝石。它提供了处理XML的所有可能需要。
builder = Nokogiri::XML::Builder.new do |xml|
xml.root {
xml.objects {
xml.object.classy.thing!
}
}
end
puts builder.to_xml
<?xml version="1.0"?>
<root>
<objects>
<object class="classy" id="thing"/>
</objects>
</root>发布于 2014-03-09 11:41:19
使用Nokogiri的建议是可以的。只是为了达到你的要求,新税应该有一点不同:
builder = Nokogiri::XML::Builder.new do |xml|
xml.root {
xml.object('type' => 'Client') {
xml.name 'John'
}
}
end
puts builder.to_xml
<?xml version="1.0"?>
<root>
<object type="Client">
<name>John</name>
</object>
</root>https://stackoverflow.com/questions/22256424
复制相似问题