Apache Freemarker - 获取重复节点和子节点

Apache Freemarker - Get repeating nodes along with child nodes

我正在使用 Apache Freemarker,目前我想使用 xPath 方法解析以下 xml 结构。

<book>
  <title>Test Book</title>
  <chapter>
    <title>Ch1</title>
    <para>p1.1</para>
    <para>p1.2</para>
    <para>p1.3</para>
  </chapter>
  <chapter>
    <title>Ch2</title>
    <para>p2.1</para>
    <para>p2.2</para>
  </chapter>
</book>

我想在HTML输出中动态显示chapter节点的子节点。 我想要的输出如下所示:

Ch1
p1.1
p1.2
p1.3

Ch2
p2.1
p2.2

如果有人可以帮助我提供有关如何使用 xPath 方法实现此功能的代码片段,那就太好了。

我确实尝试过以下失败的方法:

<#list xml["//chapter/child::text()"] as p >
<p>${p["title"]}</p>
</#list>

看来您可能需要嵌套列表:

<#list xml["//chapter"] as t>
${t.title}
  <#list t[".//para"] as p>
    ${p}
   </#list>
</#list>

输出是您的预期输出。