通过 Apache freemarker 模板读取 #list 命令中的节点索引号

Read node Index number in #list command by Apache freemarker template

我有一个如图所示的 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>

我想知道如何读取列表的索引号,这样我就可以像嵌套 for 循环一样进行迭代。 freemarker 的新手,任何指导将不胜感激。提前致谢,

里面的#list应该是这样的:<#list PDR.parameterDef as PDEF>.

两个 #list-s 不以任何方式通信。在您的原始代码中,内部 #list 列出了文档的所有 parameterDef-s,并且您对文档的每个 preDefinedRecipe 重复执行此操作。