Hi Manuela,
wenn ich deine Frage richtig verstehe, willst du wissen wie man mehrere Felder mit dem gleichen Feldnamen erzeugt, richtig?
add_field("test1","wert1")
add_field("test1","wert2")
Bei der Stream-basierten Morph konnte man ja einfach zusätzliche Elemente an die Datenschlange ergänzen. Das geht beim Record-basierten Ansatz von Catmandu und Metafacture Fix nicht so.
In Metafacture Fix (aber auch in Catmandu) ist add_field sowie die meisten Funktionen die ein neues Feld erzeugen, „destruktiv“ soll heißen es überschreibt die bestehenden Werte.
Will man hingegen wiederholte Felder erzeugen muss man etwas anders vorgehen.
Wiederholte Felder werden immer als Listen behandelt, das hat u.a. dem Vorteil, dass man einzelne Positionen in einer Liste manipulieren kann. Anstelle das Feld einfach neu zu schreiben, muss du deswegen eine Position in einer Liste ergänzen. Dafür kannst du die „Array-Wildcard“, $append
benutzen. Das ergänzt ein Feld zu einer Liste, und falls bisher keine Liste existiert, erzeugt es eine Liste.
add_field("test2.$append","wert3")
add_field("test2.$append","wert4")
So kannst du beim Rausschreiben, wiederholte Felder erzeugen.
Aus deiner bisherigen Arbeit mit Metafacture weißt du wahrscheinlich, dass du für „echte“ Arrays in JSON oder YAML noch einen Array-Marker brauchst []
add_field("test3[].$append","wert5")
add_field("test3[].$append","wert6")
Hab das auch mal im Playground abgebildet.
Deinen Vermutung zwischen encode-xml
und encode-json
verstehe ich gerade noch nicht, aber vielleicht kannst du mir da noch helfen.