如果值为 null 或空,如何使用 Apache Velocity 模板生成自闭 XML 元素

How to generate self closing XML elements using Apache Velocity template, if the value is null or empty

是否有任何更短的方法来使用 Apache Velocity 生成 xml 元素,如果值为 null 或为空,则元素带有自闭合标签。

然而,这可以通过放置 - #if #else #end 来实现。 但我需要一些更短的方法来执行此操作,因为我需要在模板中的多个位置使用它。

            #if( $stu.libno )
                <libno>$stu.libno</libno>
            #else
                <libno />
            #end

这似乎是一个很好的宏用例:

#macro( optionalTag $tagName $value )
  #if( $value )
    <$tagName>$value</$tagName>
  #else
    <$tagName/>
  #end
#end

您可以在模板的开头定义,也可以在共享的全局宏库文件中定义。然后,你可以这样做:

#optionalTag( 'libno', $stu.libno )