我有以下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。
答案 0 :(得分:1)
检查您的XML文档是否具有前缀media
的命名空间定义。元素<media:thumbnail>
或其祖先之一应该具有类似于xmlns:media="http://some.uri"
的命名空间定义。如果没有namespace-uri到前缀映射,那么您的XML不是(命名空间)格式良好的,这会导致解析失败。
检查您是否在HappyMapper代码中为thumbnail
元素定义了正确的命名空间。