Как я могу использовать атрибуты XML при преобразовании в хеш с from_xml? - PullRequest
1 голос
/ 23 июня 2010

У меня есть элемент XML с несколькими дочерними элементами, которые используют один и тот же идентификатор.Дочерние элементы различаются по атрибуту "size".Когда я создаю хеш, используя from_xml, он объединяет все эти дочерние элементы 1 в поле.

Как мне разобрать эти дочерние элементы в разные поля на основе атрибута XML?

XML:

<artist rank="48">
 <name>KISS</name>
  <image size="small">http://userserve-ak.last.fm/serve/34/3329738.jpg</image>
  <image size="medium">http://userserve-ak.last.fm/serve/64/3329738.jpg</image>
  <image size="large">http://userserve-ak.last.fm/serve/126/3329738.jpg</image>
  <image size="extralarge">http://userserve-ak.last.fm/serve/252/3329738.jpg</image>
  <image size="mega">http://userserve-ak.last.fm/serve/500/3329738/KISS+04.jpg</image>
</artist>

Ruby:

>>xml = "<artist rank='48'><name>KISS</name><image size='small'>http://userserve-ak.last.fm/serve/34/3329738.jpg</image><image size='medium'>http://userserve-ak.last.fm/serve/64/3329738.jpg</image><image size='large'>http://userserve-ak.last.fm/serve/126/3329738.jpg</image><image size='extralarge'>http://userserve-ak.last.fm/serve/252/3329738.jpg</image><image size='mega'>http://userserve-ak.last.fm/serve/500/3329738/KISS+04.jpg</image></artist>"
=> "<artist rank='48'><name>KISS</name><image size='small'>http://userserve-ak.last.fm/serve/34/3329738.jpg</image><image size='medium'>http://userserve-ak.last.fm/serve/64/3329738.jpg</image><image size='large'>http://userserve-ak.last.fm/serve/126/3329738.jpg</image><image size='extralarge'>http://userserve-ak.last.fm/serve/252/3329738.jpg</image><image size='mega'>http://userserve-ak.last.fm/serve/500/3329738/KISS+04.jpg</image></artist>"
>>h = Hash.from_xml xml
=> {"artist"=>{"name"=>"KISS", "rank"=>"48", "image"=>["http://userserve-ak.last.fm/serve/34/3329738.jpg", "http://userserve-ak.last.fm/serve/64/3329738.jpg", "http://userserve-ak.last.fm/serve/126/3329738.jpg", "http://userserve-ak.last.fm/serve/252/3329738.jpg", "http://userserve-ak.last.fm/serve/500/3329738/KISS+04.jpg"]}}

Что я хочу:

=> {"artist"=>{"name"=>"KISS", "rank"=>"48", "image_small"=>"http://userserve-ak.last.fm/serve/34/3329738.jpg", "image_medium"="http://userserve-ak.last.fm/serve/64/3329738.jpg", "image_large"="http://userserve-ak.last.fm/serve/126/3329738.jpg", "image_extralarge"="http://userserve-ak.last.fm/serve/252/3329738.jpg", image_mega"="http://userserve-ak.last.fm/serve/500/3329738/KISS+04.jpg"}}

1 Ответ

1 голос
/ 23 июня 2010

Hash.to_xml в настоящее время не будет этого делать.Это действительно просто для самых простых случаев.

Но есть открытый билет с некоторыми предлагаемыми патчами.Тем не менее, я бы порекомендовал что-то вроде Nokogiri для анализа вашего XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...