java - XML 的替代方案,也支持表达式/方法

标签 java xml language-agnostic markup

我们有一个有趣的问题。我们是一家打印公司,允许用户打印基于各种第三方来源的模板 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/

相关文章:

java - 如何比较时间?

.net - WCF、ASMX 基本 HTTP 绑定(bind)和 IIS

xml - XML 是否关心元素的顺序?

确定 Y 轴标签和位置的算法?

java - 如何在spring-jpa中保存基于实体的父表到子表的数据

java - 如何使用maven导入2个不同的证书

java - Apache POI 数据格式

xml - 如何比较 XML 文档

algorithm - 如何从其 3 位数字组合中找到一个数字?

language-agnostic - 能做到100%解耦吗?