gpt4 book ai didi

java - 通过 XML 添加 TemplateMethod

转载 作者:太空宇宙 更新时间:2023-11-04 07:58:19 24 4
gpt4 key购买 nike

我想将 XML 文件中的 TemplateMethods 添加到 Freemarker,而不是每次都触及现有的。
使用这样的值已经可以做到这一点:

示例 XML:

<example>
<value1>abc</value>
<value2>def</value>
</example>

示例模板:

This value1: ${doc.example.value1} and this value2: ${doc.example.value2}

我可以在 xml 中添加任意数量的值,并在模板中使用它,而无需更改调用程序。

<小时/>

如何使用 TemplateMethodModel 的实现来做到这一点,而不需要每次添加/删除 Freemarker 代码时都更改它?

更具体 - 我想要做什么:

XML 模型:
包含类和 TemplateMethod 的名称

<templatemethodmodel>
<method name="intToHex">example.methods.IntToHexMethod</method>
</templatemethodmodel>

模板:
调用 IntToHexMethod 类的实例

Only an example: ${intToHex(3)}

现在应该可以添加新方法(= 具有名称和类的 xml 条目),而无需触及我处理模板的 java 代码。

最佳答案

如果您想通过 FreeMarker 的 DOM 包装器来完成此操作(即通过将 DOM 对象公开为“doc”),那么您无法执行此操作(除非您扩展 freemarker.ext.dom.NodeModel,但这可能很困难)。但是,如果您并不真正需要具有所有与 XML 相关的功能(如 XPath)的 DOM 包装器,您可以从 XML 创建一个 Map(Map-s 或 Map-s 等),并将 Map 公开为模板的 doc。 (或者,您可以编写自己的 DOM 节点包装器,该包装器完全按照您的需要将 XML 公开给模板,但这有点复杂。)

关于java - 通过 XML 添加 TemplateMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13273540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com