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

问题描述 投票:0回答:1

我有一个如图所示的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的新手,任何指导将不胜感激。预先感谢,

我有一个如图所示的xml文件,现在我想用freeMarker模板读取它并获得所需的输出&...

xml list apache freemarker
1个回答
0
投票

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

这两个#list-不会进行任何通信。在原始代码中,内部的#list列出了文档的所有parameterDef-,然后一次又一次地对文档的每个preDefinedRecipe执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.