我有一个XML文件,其中包含同名的嵌套元素,具体为:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<category>
<name>Parent category</name>
<category>
<name>Child category 1</name>
</category>
<category>
<name>Child category 2</name>
</category>
</category>
</root>
我正在使用HappyMapper gem进行此映射:
class Root
include HappyMapper
has_many :category, Category
end
class Category
include HappyMapper
has_many :category, Category
end
现在,如果我运行root = Root.parse(xml)
,我希望将整个树作为嵌套元素。我希望root.category.size
返回1
,root.category.first.category
返回2
。
相反,我也会在根目录中获取名称为category
的所有元素。有没有办法如何指定has_many应该只针对直接孩子呢?
答案 0 :(得分:0)
我明白了。 xpath
有一个可选的has_many
参数,值"."
表示它只会查看直接子项。
所以解决方案是:
class Root
include HappyMapper
has_many :category, Category, xpath: '.'
end
class Category
include HappyMapper
has_many :category, Category, xpath: '.'
end