如果父元素的名称在freemarker中有点,如何读取子元素中的文本

时间:2013-12-04 00:19:18

标签: freemarker

我有一个xml文档,我想用freemarker解析。 XML文档本身是在我的smooks脚本中使用SAX自动生成的。这个smooks脚本创建了以下XML,其元素名称来自我在工作区中的实际java包名称。

<map>
    <entry>
        <string>RunReportMsg</string>
        <com.web.ws.messages.v1__2.RunReportMsg>
            <analyticsReport>
                <columns>
                    <com.web.ws.objects.v1__2.ReportColumn>
                        <dataType>
                            <id>
                                <id>10</id>
                            </id>
                        </dataType>
                    </com.web.ws.objects.v1__2.ReportColumn>
                </columns>
            <analyticsReport>
        </com.web.ws.messages.v1__2.RunReportMsg>
    </entry>
</map>

此网站上发布了一个类似的问题。但我无法弄清楚这将如何解决我的问题。

Access XML elements with names containing a period/dot in FreeMarker templates

我知道如何在元素“string”中访问“RunReportMsg”文本。

$ {map.entry.string}

如何使用freemarker中的点分表示法访问以下子元素中的数据?由于元素“com.web.ws.messages.v1__2.RunReportMsg”具有多个句点,因此我不确定如何遍历其他子元素。我需要一种方法来找出以下“id”元素中的数字。

<id>10</id> 

我在“.vars”上阅读了freemarker网站上的表达文档。我不确定这是否适用于我的情况。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用以下语法:

${map.entry["com.web.ws.messages.v1__2.RunReportMsg"].analyticsReport.columns["com.web.ws.objects.v1__2.ReportColumn"].dataType.id.id}