Считать порядковый номер узла в команде #list по шаблону Apache freemarker - PullRequest
0 голосов
/ 17 января 2020

У меня есть xml файл, как показано, теперь я хочу прочитать его с помощью шаблона freeMarker и получить желаемый результат

<preDefinedRecipes>
        <preDefinedRecipe type="BREAD" name="A" >


            <parameterDef ref="SUGAR_QTY" value="3" />
                <parameterDef ref="SALT_QTY" value="3" />
                <parameterDef ref="OIL_QTY" value="1" /> 

        </preDefinedRecipe>
        <preDefinedRecipe type="BREAD" name="B" >


            <parameterDef ref="SUGAR_QTY" value="5" />
                <parameterDef ref="SALT_QTY" value="7" />
                <parameterDef ref="FLOUR_QTY" value="3" />

        </preDefinedRecipe>
    </preDefinedRecipes>
Op needed:
('A','SUGAR_QTY','3')
('A','SALT_QTY','3')
('A','OIL_QTY','1')

('B','SUGAR_QTY','5')
('B','SALT_QTY','7')
('B','FLOUR_QTY','3')

Но результат, который я смог сгенерировать, равен

('A','SUGAR_QTY','3')

('A','SALT_QTY','3')

('A','OIL_QTY','1')

('A','SUGAR_QTY','5')

('A','SALT_QTY','7')

('A','FLOUR_QTY','3')


('B','SUGAR_QTY','3')

('B','SALT_QTY','3')

('B','OIL_QTY','1')

('B','SUGAR_QTY','5')

('B','SALT_QTY','7')

('B','FLOUR_QTY','3')

('B','FLOUR_QTY','3')

Это шаблон

<#list doc.preDefinedRecipes.preDefinedRecipe as PDR>

<#assign Name = PDR.@name>
<#list doc.preDefinedRecipes.preDefinedRecipe.parameterDef as PDEF>
('${PDR[0].@name}','${PDEF.@ref}','${PDEF.@value}')

</#list>
</#list>

Я хочу знать, как прочитать индексный номер списка, чтобы я мог выполнять итерации, как вложенные для l oop. Новое в freemarker, любые рекомендации будут оценены. заранее спасибо

1 Ответ

0 голосов
/ 18 января 2020

Внутренний #list должен быть таким: <#list PDR.parameterDef as PDEF>.

Два #list -ы никак не связаны. В вашем исходном коде внутренний #list перечисляет все parameterDef -ы документа, и вы делаете это снова и снова для каждого preDefinedRecipe документа.

...