HappyMapper名称空间前缀错误

时间:2011-02-15 15:10:29

标签: ruby xml xml-namespaces

我有以下XML文档,并希望使用happymapper将xml转换为对象。

<objects>
<item>
<title>book1</title>
<link>http://asdf.com</link>
<pubDate>march 1 2009</pubDate>
<description>testtesttest</description>
<media:thumbnail url='http://url.com' />
</item>
<item>
<title>book2</title>
<link>http://dffdfdf.com</link>
<pubDate>march 3 2009</pubDate>
<description>testtesttest</description>
<media:thumbnail url='http://url.com' />
</item>
</objects>

#HappyMapper object
class Item
 include HappyMapper
 namespace 'http://search.yahoo.com/mrss/'
 element :title, String
 element :link, String
 element :pubDate, String
 element :description, String
 element :media_thumbnail, String, :tag=>'media:thumbnail', :attributes=>{:url=>String}
end

items=Item.parse(xml_document)
items.each do |i|
 puts i.title
 puts i.media_thumbnail.url
end

错误:缩略图上的命名空间前缀媒体未定义在:11。

错误:缩略图上的命名空间前缀媒体未定义在:22。

1 个答案:

答案 0 :(得分:1)

  1. 检查您的XML文档是否具有前缀media的命名空间定义。元素<media:thumbnail>或其祖先之一应该具有类似于xmlns:media="http://some.uri"的命名空间定义。如果没有namespace-uri到前缀映射,那么您的XML不是(命名空间)格式良好的,这会导致解析失败。

  2. 检查您是否在HappyMapper代码中为thumbnail元素定义了正确的命名空间。