当前位置: 首页 > 知识库问答 >
问题:

我想在FreeMarker中将XML作为宏参数传递

谢洛城
2023-03-14
<root
    xmlns="urn:hl7-org:v3">
    <head>
        <leaf>l123</leaf>
    </head>
</root>
<#ftl ns_prefixes={"D":"urn:hl7-org:v3"}>
<#import "support.ftl" as aux/>
<@aux.support inp=inputXML["D:root"].head/>
<#macro support inp>
${inp.leaf}
</#macro>

当我运行这些时,我将得到以下错误

使用FreeMarker模板转换输入消息时出错:对于“${...}”内容:需要一个字符串或自动转换为字符串(数字、日期或布尔值)或“模板输出”的东西,但它的计算结果是一个序列+哈希(包装器:f.e.dom.nodelistmodel):==>inp.leaf[在模板“support.ftl”中第2行,第3列]

如果我将字符串传递给支持的FTL而不是XML,模板就可以工作

<#ftl ns_prefixes={"D":"urn:hl7-org:v3"}>
<#import "support.ftl" as aux/>
<@aux.support inp=inputXML["D:root"].head.leaf/>
<#macro support inp>
${inp}
</#macro>

我该怎么做?

谢谢

共有1个答案

厍浩广
2023-03-14

找到了解决办法。

这可以通过使宏不带参数来实现。

如果宏中没有参数,则传递完整的XML。

<#macro support >
${inputXML["D:root"].head.leaf}
</#macro>
 类似资料:
  • 问题内容: 我读了很多文章,尝试了很多事情,但仍然无法通过xsl在参数中找到值。我从java的sun xalan开始,但是从来没有运行过,所以我改用saxon无济于事。我想将两个xml文档与xls合并为一个。永远不要在文件系统上,这是用于构建xml字符串/ docs的Web应用程序。我尝试将DTMAxisIterator,DomSource,Doc传递给以xsl,字符串设置的Node。在带有xsl

  • 问题内容: 我正在尝试制作一个方法,该方法的参数为,等等,然后返回。 我将为该方法提供的所有可能的类均从该方法扩展并具有方法。 我的代码: 致电者: 但是,这根本不起作用。 请问我该怎么做? 问题答案: 我想你想做 希望像这样的东西行得通(我的反思能力真的不是那么好)。

  • 问题内容: 我想使用数组作为参数调用一个函数: 有路过的内容的一种更好的方式进入? 问题答案: const args = [‘p0’, ‘p1’, ‘p2’]; call_me.apply(this, args); 请参阅MDN文档。 如果环境支持ECMAScript6,则可以改用传播参数:

  • 问题内容: 在Java中,如何将一个函数作为另一个函数的参数传递? 问题答案: Java 8及以上 如果你的类或接口只有一个抽象方法(有时称为SAM type),则使用Java 8+ lambda表达式,例如: 然后可以在使用MyInterface的任何地方替换lambda表达式: 例如,你可以非常快速地创建一个新线程: 并使用方法引用语法使其更加清晰: 如果没有 lambda表达式,则最后两个示

  • 问题内容: 我有一个界面: 和一个实现它的类 第三类实现了此方法: 现在我试图像这样调用该方法 但我不断得到一个例外说: 如果它连接了该类,该方法不起作用吗? 问题答案: 也许你需要

  • 问题内容: 如何在不执行“父”函数或不使用函数的情况下将函数作为参数传递?(因为我已经读到它是不安全的。) 我有这个: 它可以工作,但是问题是在调用函数时触发,而不是在函数中使用时触发。 根据我所读的内容,我可以使用来解决它,但这不是最佳实践。如何在JavaScript中将函数作为参数传递? 问题答案: 您只需要删除括号: 然后,这将传递函数而不先执行它。 这是一个例子: