Java StringTemplate缩进在字符串中添加空格

Java StringTemplate缩进在字符串中添加空格,java,stringtemplate,stringtemplate-4,Java,Stringtemplate,Stringtemplate 4,这显然是一个SSCCE 我有以下模板文件: xml(value)::=<< <a> <b> ^value^ </b> </a> >> 该代码生成: [java] -------- [java] <a> [java] <b> [java] alpha [java] beta [java] </b>

这显然是一个SSCCE

我有以下模板文件:

xml(value)::=<<
<a>
    <b>
        ^value^
    </b>
</a>
>>
该代码生成:

 [java] --------
 [java] <a>
 [java]     <b>
 [java]         alpha
 [java]         beta
 [java]     </b>
 [java] </a>
 [java] --------
。。。还必须重写为:

enclosing-document(xml)::=<<
<h1>
    <h2>
^xml^
    </h2>
</h1>
>>
随附文档(xml):=>
。。。实际上,需要确保所有节点的左对齐

有没有一种方法可以指示StringTemplate只按原样发出一个特定的字符串参数(如果其中出现新行,则不缩进),同时为所有其他情况保留空白/缩进(这样我的渲染输出就不会很难看)

更新
我试着使用了这个工具,但没有成功。因此,
NoIndentWriter
确实会按原样发出多行字符串,但是尊重模板文件中存在的空白。所以我回到了原点。

所以最后我所做的就是使用给定的代码。然后,为了解决缩进不足导致XML难看的问题(在前面的帖子中有抱怨),我使用了前面描述的XML漂亮打印机。

将内容包含在
部分会改变结果吗?@dasblinkenlight我不确定我是否理解你的建议。无论如何,如果在模板中添加了CDATA,那么在缩进多行字符串的过程中,在插入空格方面没有任何变化。此外,我不确定在我的最终文档中添加CDATA部分是否没有副作用。我正在考虑
,希望stringtemplate能够关注
CDATA
部分。看起来没有。哦,好吧…也许可以尝试不同的模板引擎?免费标记?速度或者,既然您正在生成XML,为什么不使用XML生成库呢?Xerces、XStream、Smooks等@MikeClark我想更新您之前添加的代码,并将其作为解决方案接受,因为考虑到这些限制,这是最好的解决方案(尽管它确实会丢失所有缩进)。
xml(value)::=<<
<a>
    <b>^value^</b>
</a>
>>
enclosing-document(xml)::=<<
<h1>
    <h2>
        ^xml^
    </h2>
</h1>
>>
enclosing-document(xml)::=<<
<h1>
    <h2>
^xml^
    </h2>
</h1>
>>