字符'<' '>'不能在XML的属性值中使用

时间:2014-11-07 08:30:24

标签: xml velocity

现在我正在尝试使用 Velocity Template 从类文件生成XML文件。 在类文件中,

public List<String> temp(String str, List<String>) {
    ......
}

我想用这种格式生成XML文件。

<jar name="JAR2">
    <signature>
        <class name=" JAR2.AA.EE.Class B ">
            <method name="temp" type=" java.util.List<java.lang.String> ">
                <parameter type="java.lang.Integer" />
                <parameter type="java.util.List<java.lang.String>" />
            </method>
       </class>
    </signature>
</jar>

我的问题是 字符'&lt;' '&GT;'不能在属性值中使用。 我想允许这些字符'&lt;' '&GT;'在我的XML文件中。我想知道在 Velocity Engine中添加属性。 请给我一些想法。谢谢!

3 个答案:

答案 0 :(得分:3)

您尝试使用的内容会使XML的语法无效。

相反,您必须使用它们(几乎)等效的HTML来编码这些特殊字符。

在您的情况下,他们将是:

&lt;的{​​p> <;和&gt; >

答案 1 :(得分:1)

嗯,这不是有效的XML。想想其他一些编码方式。

也许

<method name="temp" type="java.util.List" genericTypes="java.lang.String">

<method name="temp" type="java.util.List[java.lang.String]">

我想您也可以将<直接编码为&lt;

答案 2 :(得分:0)

我认为我的问题并不清楚。我用这段代码得到了它。谢谢!

ve.addProperty("eventhandler.referenceinsertion.class",
                    "org.apache.velocity.app.event.implement.EscapeXmlReference");
    ve.setProperty("eventhandler.escape.xml.match",
                    "/^\\$([^_\\{].*|\\{[^_].*\\})$/");