2011-11-01 35 views
-1

我想阅读并打开一个.yml文件并使用Nokogiri创建一个XML?有人可以告诉我该怎么做吗?如何使用Nokogiri从Yaml文件创建XML?

这是YAML格式:

getOrderDetails: 
    Id: '114' 
    Name: 'XYZ' 

这是我需要的XML:

<product> <id>123</id> <name>xyz</name> </product> 

这是红宝石文件:

​​
+0

信息不足:例如,(小而简洁)YAML覆盖所有的情况下,如何生成的XML为例子应该看。 – tokland

+0

这是YAML格式 产品: ID:123 名称:XYZ 这是输出,我需要...... XYZ user1023627

+0

你可以发布你有什么尝试到目前为止? – eugen

回答

2

如果你知道的领域你要具体:

require 'yaml' 
require 'nokogiri' 

yaml = "getOrderDetails: 
    Id: '114' 
    Name: 'XYZ'" 
doc = YAML.load yaml 

output = Nokogiri::XML::Builder.new do |xml| 
    xml.product{ 
    xml.id doc["getOrderDetails"]["Id"] 
    xml.name doc["getOrderDetails"]["Name"] 
    } 
end 
puts output.to_xml 
#=> <?xml version="1.0"?> 
#=> <product> 
#=> <id>114</id> 
#=> <name>XYZ</name> 
#=> </product> 

如果您想根据YAML按键的名称创建一个任意的XML文件:

output = Nokogiri::XML::Builder.new do |xml| 
    xml.product{ 
    doc["getOrderDetails"].each do |name,value| 
     xml.send(name.downcase,value) 
    end 
    } 
end 
puts output.to_xml 
#=> <?xml version="1.0"?> 
#=> <product> 
#=> <id>114</id> 
#=> <name>XYZ</name> 
#=> </product> 
+1

好的答案! (添加字符以允许评论。:-) –