我試圖輸出一個xml文件blog.xml作爲yaml,用於放入vision.app,一個用於在本地設計shopify電子商務網站的工具。用Ruby和Hpricot將xml轉換爲yaml - 這裏出了什麼問題?
Shopify的YAML看起來是這樣的:
- id: 2
handle: bigcheese-blog
title: Bigcheese blog
url: /blogs/bigcheese-blog
articles:
- id: 1
title: 'One thing you probably did not know yet...'
author: Justin
content: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
created_at: 2005-04-04 16:00
comments:
-
id: 1
author: John Smith
email: [email protected]
content: Wow...great article man.
status: published
created_at: 2009-01-01 12:00
updated_at: 2009-02-01 12:00
url: ""
-
id: 2
author: John Jones
email: [email protected]
content: I really enjoyed this article. And I love your shop! It's awesome. Shopify rocks!
status: published
created_at: 2009-03-01 12:00
updated_at: 2009-02-01 12:00
url: "http://somesite.com/"
- id: 2
title: Fascinating
author: Tobi
content: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
created_at: 2005-04-06 12:00
comments:
articles_count: 2
comments_enabled?: true
comment_post_url: ""
comments_count: 2
moderated?: true
然而,樣品myxml看起來是這樣的:
<article>
<author>Rouska Mellor</author>
<blog-id type="integer">273932</blog-id>
<body>Worn Again are hiring for a new Sales Director.
To view the full job description and details of how to apply click "here":http://antiapathy.org/?page_id=83</body>
<body-html><p>Worn Again are hiring for a new Sales Director.</p>
<p>To view the full job description and details of how to apply click <a href="http://antiapathy.org/?page_id=83">here</a></p></body-html>
<created-at type="datetime">2009-07-29T13:58:59+01:00</created-at>
<id type="integer">1179072</id>
<published-at type="datetime">2009-07-29T13:58:59+01:00</published-at>
<title>Worn Again are hiring!</title>
<updated-at type="datetime">2009-07-29T13:59:40+01:00</updated-at>
</article>
<article>
我天真地認爲從一個序列化數據格式轉換爲另是相當簡單的,我可以乾脆這樣做:
>> require 'hpricot'
=> true
>> b = Hpricot.XML(open('blogs.xml'))
>> puts b.to_yaml
但我越來越這個錯誤河
NoMethodError: undefined method `yaml_tag_subclasses?' for Hpricot::Doc:Class
from /usr/local/lib/ruby/1.8/yaml/tag.rb:69:in `taguri'
from /usr/local/lib/ruby/1.8/yaml/rubytypes.rb:16:in `to_yaml'
from /usr/local/lib/ruby/1.8/yaml.rb:391:in `call'
from /usr/local/lib/ruby/1.8/yaml.rb:391:in `emit'
from /usr/local/lib/ruby/1.8/yaml.rb:391:in `quick_emit'
from /usr/local/lib/ruby/1.8/yaml/rubytypes.rb:15:in `to_yaml'
from /usr/local/lib/ruby/1.8/yaml.rb:117:in `dump'
from /usr/local/lib/ruby/1.8/yaml.rb:432:in `y'
from (irb):6
from :0
>>
我怎樣才能得到在這個問題的頂部概述的形式的數據輸出?我嘗試導入'yaml'寶石,認爲我錯過了其中的一些方法,但這並沒有幫助:
epochwolf在一個月前在GitHub上打開此問題:http://github.com/why/hpricot/issues/#issue/16 您的規格是否相同(Hpricot 0.8.1,Rails 2.3.2,Ruby 1.8.6(OSX),RubyGems 1.3.4)? – mcandre 2009-08-17 16:48:17
是啊,差不多: RubyGems的 - 1.3.5 的Ruby 1.8.6 角度來說,Hpricot 0.8.1 OS X 的Rails 2.3。2 – 2009-08-17 21:29:58
正如對任何尋找XML/HTML解析的人來說的一樣,Hpricot不再被使用,事實上的標準是[Nokogiri](http://nokogiri.org)。 YAML解析使用[YAML](http://www.ruby-doc.org/stdlib-2.1.5/libdoc/yaml/rdoc/index.html)類構建到Ruby中。 – 2014-11-27 22:14:04