Ant用特殊字符替换文本

时间:2015-07-27 18:22:12

标签: xml ant

这应该很简单。我想打开一个文件,搜索一个字符串,然后用一个包含特殊字符的字符串替换该字符串:

<replace file="${src}/index.html" token="</copyright>"
value="</copyright> <legalnotice xml:id="DocLegalNotice" xml:base="../../../reusable-content/legal-notice.xml" xml:lang="">"/>

当我运行它时,构建不喜欢特殊字符:

The value of attribute "token" associated with an element type "replace"
must not contain the '<' character.

我是否必须为“令牌”和“价值”逃脱每个特殊字符,或者是否有更简单的方法?

1 个答案:

答案 0 :(得分:3)

您的第一个问题是ant文件必须是格式良好的XML文件,并且格式良好的XML在属性值中不能包含<个字符。请改用&lt;

您的第二个问题是由双引号字符(")分隔的属性值不能包含未转义的嵌入式双引号字符。请改用'

<replace file="${src}/index.html" 
         token="&lt;/copyright>"
         value="&lt;/copyright> &lt;legalnotice xml:id='DocLegalNotice' xml:base='../../../reusable-content/legal-notice.xml' xml:lang=''>"/>

至少你的ant文件格式正确,但实际上,通过将其视为文本替换XML文件有点像黑客。更好的方法是使用基于XML的工具(如XSLT)进行此类更改。