2016-12-08 5 views
1

Ich habe eine XML-Datei mit verschachtelten Elementen des gleichen Namen, insbesondere:Wie verschachtelte Elemente mit dem gleichen Namen analysieren mit HappyMapper

<?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> 

I HappyMapper gem mit dieser Zuordnung bin mit:

class Root 
    include HappyMapper 
    has_many :category, Category 
end 

class Category 
    include HappyMapper 
    has_many :category, Category 
end 

Jetzt, wenn ich root = Root.parse(xml) ausführen, würde ich erwarten, den gesamten Baum als verschachtelte Elemente zu erhalten. Ich erwarte, dass root.category.size1 und root.category.first.category zurückgeben 2.

Stattdessen bekomme ich alle Elemente mit dem Namen category in root auch. Gibt es eine Möglichkeit, anzugeben, dass has_many nur nach direkten Kindern suchen soll?

Antwort

0

Ich fand es heraus. Es gibt einen optionalen xpath Parameter für has_many und Wert "." bedeutet, dass es nur in direkten Kindern aussehen wird.

So ist die Lösung:

class Root 
    include HappyMapper 
    has_many :category, Category, xpath: '.' 
end 

class Category 
    include HappyMapper 
    has_many :category, Category, xpath: '.' 
end 
Verwandte Themen