我正在尝试使用FreeMarker进行XML-XML转换。
什么是处理空对象的正确方法。 (不是值,而是空对象)

当输入XML中不存在“ AlertIndicator”标签时,该如何处理。
我尝试了所有这些组合,但似乎没有用:(

 <#if Response.Variables.AlertIndicator??>${Response.Variables.AlertIndicator}<#else></#if>
<#if (Response.Variables.AlertIndicator)??>${Response.Variables.AlertIndicator}<#else></#if>

${Response.Variables.AlertIndicator!""}
 ${(Response.Variables.AlertIndicator)!""}


所有这些给我一个例外

Expected a string or something automatically convertible to string (number, date or boolean), but this evaluated to a sequence+hash
Tip: This XML query result can't be used as string because for that it had to contain exactly 1 XML node, but it contains 0 nodes


似乎唯一的东西是“ has_content”,但处理时间却是它的两倍,这对我的应用程序来说是一个很大的缺点

最佳答案

DOM查询的结果始终是节点列表,即使可能是长度为0的列表。结果节点列表本身始终存在,因此Response.Variables.AlertIndicator??始终为true。 (这也意味着,如果没有Variables并且没有AltertIndicators,该查询将起作用,即可以安全地链接步骤。)因此,您必须检查结果列表中的第一个节点存在:Response.Variables.AlertIndicator[0]??

07-24 13:27