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

Posted

技术标签:

【中文标题】如果父元素的名称在freemarker中有点,如何读取子元素中的文本【英文标题】:how to read text in child elements if the parent element's name has dots in freemarker 【发布时间】:2013-12-20 07:02:55 【问题描述】:

我有一个想要使用 freemarker 解析的 xml 文档。 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】:

您可以使用以下语法:

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

【讨论】:

这正是我所需要的。非常感谢@Obourgain。 很高兴为您提供帮助。不要犹豫,接受答案(见here)

以上是关于如果父元素的名称在freemarker中有点,如何读取子元素中的文本的主要内容,如果未能解决你的问题,请参考以下文章

如何撑开父元素,让父元素div自动适应高度的问题

Freemarker判断是否包含某个元素

Freemarker判断是否包含某个元素

将元素附加到子元素会触发父元素中的 drop 事件

jquery js 兄弟父元素的获取

关于如何获取iframe中的元素