【发布时间】:2015-04-06 22:26:30
【问题描述】:
您好,我需要生成一个如下所示的 XML:
<?xml version="1.0" encoding="UTF-8" ?>
<Addresses>
<CurrentAddress>
<Country>United Kingdom</Country>
<ZipPostcode>OX4 2QX</ZipPostcode>
<AddressLine1>36 Brasenose Driftway</AddressLine1>
<AddressLine2>Oxford</AddressLine2>
<AddressLine3 />
<FirstYearOfResidence>2002</FirstYearOfResidence>
<LastYearOfResidence>2014</LastYearOfResidence>
</CurrentAddress>
<PreviousAddress1>
<Country>United Kingdom</Country>
<ZipPostcode>AB1 1AA</ZipPostcode>
<AddressLine1>21 A Street</AddressLine1>
<AddressLine2>Aberdeen</AddressLine2>
<AddressLine3 />
<FirstYearOfResidence>1998</FirstYearOfResidence>
<LastYearOfResidence>2002</LastYearOfResidence>
</PreviousAddress1>
</Addresses>
即我只需要一个“地址”块,但我有一些问题 我当前的对象表示:
address_count = 0
running = []
@person.addresses.each do |address|
Rails.logger.debug 'Adding address'
if address_count == 0
Rails.logger.debug 'Adding current address'
running.push(
CurrentAddress: {
Country: address.country,
ZipPostcode: address.postcode,
AddressLine1: address.line1,
AddressLine2: address.line2,
AddressLine3: address.town_city,
FirstYearOfResidence: address.from_year,
LastYearOfResidence: address.to_year
}
)
else
Rails.logger.debug 'Adding previous address'
running.push(
"PreviousAddress#{address_count}" => {
Country: address.country,
ZipPostcode: address.postcode,
AddressLine1: address.line1,
AddressLine2: address.line2,
AddressLine3: address.town_city,
FirstYearOfResidence: address.from_year,
LastYearOfResidence: address.to_year
}
)
end
address_count += 1
end
在 JSON 中会像下面的代码:
{
"Addresses": [
{
"CurrentAddress": {
"Country": "United Kingdom",
"ZipPostcode": "OX4 2QX",
"AddressLine1": "36 Brasenose Driftway",
"AddressLine2": "Oxford",
"AddressLine3": null,
"FirstYearOfResidence": 2002,
"LastYearOfResidence": 2014
}
},
{
"PreviousAddress1": {
"Country": "United Kingdom",
"ZipPostcode": "AB1 1AA",
"AddressLine1": "21 A Street",
"AddressLine2": "Aberdeen",
"AddressLine3": null,
"FirstYearOfResidence": 1998,
"LastYearOfResidence": 2002
}
}
]
}
这实际上生成了一个带有两个“地址”块的 XML。
有人知道我如何生成我的对象的表示(如果不是 JSON 也可以),在 XML 转换之后看起来像我需要的那个?
我也在考虑直接生成 XML。 在这种情况下,如何从上面发布的 Ruby Hash 生成所需的 XML?
只是为了记录,我需要它,因为我正在使用 SAVON(Ruby 的 SOAP 客户端)。
非常感谢!
【问题讨论】:
标签: ruby-on-rails ruby xml json savon