我正在尝试使用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]??