我们有一个有趣的问题。我们是一家打印公司,允许用户打印基于各种第三方来源的模板 Material 。一个例子是查找待售房屋的详细信息并将这些值注入(inject)该房屋的宣传册中。
目前我们的模板是在 xml 文件中定义的。文本标签的一个属性是在我们的系统中调用的方法名称,以获取所需的自动填充值。由于后端是用 Java 编写的,我们使用反射来查找用户传入的几个对象之一中的方法。作为一个例子,它看起来像这样......
<PagePart>
<profileTag>**getAddress**</profileTag>
<text>123 Example St NW</text>
<fontFile>Helvetica.TTF</fontFile>
<fontName>Helvetica</fontName>
<fontStyle>0</fontStyle>
<fontAlignment>0</fontAlignment>
<fontSize>18</fontSize>
<positionLeft>19</positionLeft>
<positionTop>88</positionTop>
<Color>
<r>0</r>
<g>130</g>
<b>200</b>
</Color>
<visibility>false</visibility>
</PagePart>
profileTag 中的 getAddress 是我们系统中在初始化模板的新实例时调用的方法。当我们添加新模板时,我们需要像这样构建精美的字符串
public String getBusinessPhoneWithTitle() {
if (!phone.isEmpty()) return "B " + phone;
else return "";
}
我们计划拥有数千个模板(目前有数百个),而这些仅支持一两个模板的“格式化”方法正在失控。我们需要一种方法,让元素通过我们发明或找到的脚本语言来包含实际逻辑。
我想知道是否有人知道一种脚本语言,它具有对象文字表示法,可以替换标记的 XML,同时提供可评估的代码。如果没有,您会使用哪种语言来评估动态表达式?
最佳答案
您可以使用 Velocity Templates 和 java 来构造 xml。您可以将纯 java api 直接构建到您的应用程序中。主页是:http://velocity.apache.org/
关于java - XML 的替代方案,也支持表达式/方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6907255/