这应该非常简单。我想打开一个文件,搜索一个字符串,然后用一个包含特殊字符的字符串替换这个字符串:
<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.
我是否必须转义"token"one_answers"value"的每个特殊字符,或者有更简单的方法?
您的第一个问题是ant文件必须是格式良好的XML文件,而格式良好的XML不能在属性值中包含<
字符。用<
代替。
您的第二个问题是由双引号字符("
)分隔的属性值不能有未转义的嵌入双引号字符。使用'
代替。
<replace file="${src}/index.html"
token="</copyright>"
value="</copyright> <legalnotice xml:id='DocLegalNotice' xml:base='../../../reusable-content/legal-notice.xml' xml:lang=''>"/>
至少您的ant文件将是格式良好的,但实际上,通过将XML文件视为文本来对其进行替换是一种hack。更好的方法是使用基于xml的工具(如XSLT)进行此类更改。