- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试将 xml 文件 blog.xml 输出为 yaml,以便放入 vision.app,这是一种用于在本地设计 shopify 电子商务网站的工具。
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: john@smith.com
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: john@jones.com
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”gem,认为我缺少其中一些方法,但这也没有帮助:
最佳答案
抱歉,Josh,我认为你在这里发现的是 Hpricot 和/或 YAML 库中的限制,纯粹而简单。
我不确定 Hpricot 是否曾经以这种方式支持 YAML。有问题的方法由 YAML 库动态添加到 Object 类,以及其他基本的 Ruby 类型,但由于某种原因没有出现在 Hpricot::Doc 的定义中,即使 Hpricot::Doc 似乎继承了间接来自对象。
我可以说我也转载了,所以不只是你。
您可以很容易地添加缺少的方法:
class Hpricot::Doc
def self.yaml_tag_subclasses?
"true"
end
end
b = Hpricot.XML(open('blogs.xml'))
但您会发现这并不能使您走得更远。这是我得到的:
--- !ruby/object:Hpricot::Doc
options:
:xml: true
所以我们没有像我们应该的那样迭代容器。
在这一点上,要使用 YAML 库获得 YAML 支持,蛮力的方法(也许是唯一的方法)是将 to_yaml
方法添加到 Hpricot 的类中,教他们如何输出YAML 正确。看看“/usr/lib/ruby/1.8/yaml/rubytypes.rb”(在 Mac 上,类似于“/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/yaml/rubytypes.rb") 获取如何为每个基本 Ruby 类型完成的示例。您可能需要将其添加到的类在 C 端定义:请参阅方法 Init_hpricot_scan
中的“hpricot/ext/hpricot_scan/hpricot_scan.rl”。
关于xml - 使用 Ruby 和 Hpricot 将 xml 转换为 yaml - 这里出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1289074/
已升级到 Rails 3,并在混合平台开发组中使用 Bundler for gems。我在 Windows 上。当我运行 Bundle Install 时,它会成功完成,但不会安装 hpricot。
我正在按照以下说明尝试将我的博客迁移到 Jekyll:http://jekyllrb.com/docs/migrations/ 我的所有帖子都是 .xml 格式的,但是转换它们的命令似乎不起作用:
我正在使用 hpricot 来阅读 HTML。我遇到了段错误,我用谷歌搜索,有人说升级到最新版本的 Ruby。我正在使用 rails 2.3.2 和 ruby 1.8.7。如何解决这个错误? 最佳
在 ruby 1.9 中尝试使用 hpricot 抓取网页时出现以下编码错误: Encoding::CompatibilityError: incompatible character encod
我正在使用 Ruby 的 Hpricot gem 来解析 html。我想从文档中删除单个节点以便在其他地方使用,但我找不到办法。 我看到我可以删除整个元素列表,使用 Hpricot::Elements
我正在尝试编写一个 CSS 选择器,它可以使用 hpricot 选择除脚本元素之外的所有内容,我可以轻松地选择 select-me div 的所有内容,然后删除脚本元素,但我想知道它是否可以使用一个将
我刚开始学习 Ruby。很酷的语言,很喜欢。 我正在使用非常方便的 Hpricot HTML 解析器。 我要做的是抓取页面中的所有文本,不包括 HTML 标记。 例子:
我想从 HTML 页面(实际上是 tinymce 用户输入)中删除所有不符合特定条件(class = "int"或 class = "ext")的图像,我正在努力寻找正确的方法。这就是我目前所做的:
Hpricot + Ruby XML 解析和逻辑选择。 目标:找到作者 Bob 写的所有标题。 我的 XML 文件: Book1 march 1 2010 Bob book2 october
现在http://github.com/why/hpricot/wikis/home不再存在。 最佳答案 尝试 github.com/whymirror您将获得 _why 创建的所有内容 或者特别是
你会选择哪一个?我的重要属性是(排名不分先后): 支持和 future 的改进。 社区和一般知识库(在 Internet 上)。 全面(即,证明可以解析范围广泛的 *.*ml 页面)。 表现。 内存占
我刚刚注意到很多 hpricot 代码都是用 java 编写的... alt text http://img697.imageshack.us/img697/7447/picture2yw.png 我
我已经做了一些搜索,但没有一个能解决这个奇怪的、意想不到的问题。直接看代码吹吧: require 'open-uri' require 'hpricot' doc = Hpricot(open("ht
有人可以解释一下如何使用带有 Hpricot gem 的 Ruby 将自定义属性添加到 HTML 标签吗? 我有一个看起来像这样的标签: 我想添加一个名为“Readable=0”的自定义整数属性,它
我正在编写一个 ruby 脚本来从 Yahoo 获取历史股票价格,使用 Hpricot 来解析页面。这主要是直截了当的:网址是“http://finance.yahoo.com/q/hp?s= T
我正在编写一些代码,为页面上的两个 css 类抓取页面。我只是为此使用 Hpricot 搜索方法: webpage.search("body").search("div.first_class | d
在 Hpricot 文档中(位于 https://github.com/hpricot/hpricot),有一个 doc.search() 方法。然后文档继续说“快捷方式是使用除数”: (doc/"p
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 9 年前。 Improve this qu
我知道我可以使用 Hpricot 解析 XML,但是否也可以创建文件?我找到的所有教程都只演示解析。 最佳答案 Jim Weirich 的 Builder非常容易使用。这是来自 Enterprise
像这样: Hello world just do it 我想删除每个元素的“样式”属性。我想要这样的结果: Hello world just do it 如何使用 hpricot 做到这一
我是一名优秀的程序员,十分优秀!