在Ant中替换尖括号
我使用 ReplaceRegexp
任务写了一段脚本替换XML的值:
1<replaceregexp file="app.xml"
2 match="<filename>"
3 replace="name"
4 encoding="UTF-8"/>
由于XML规范不允许在属性值中出现尖括号,Ant会报错:
d:\works\build\build.xml:70: 与元素类型 "null" 相关联的 "match" 属性值不能包含 '<' 字符。
把左右尖括号用他们的十六进制代码代替就可以解决这个问题:
1<replaceregexp file="app.xml"
2 match="\x3Cfilename\x3E"
3 replace="name"
4 encoding="UTF-8"/>
如果希望在替换的内容中也使用尖括号,需要一点点小技巧:
1<replaceregexp file="app.xml"
2 match="(\x3C)filename(\x3E)"
3 replace="\1name\2"
4 encoding="UTF-8"/>
当然,还有更简单的办法,就是使用 Replace
的 replacetoken
。
1<replace file="app.xml" encoding="UTF-8">
2 <replacetoken><![CDATA[<filename>]]></replacetoken>
3 <replacevalue><![CDATA[<name>]]></replacevalue>
4</replace>
- 文章ID:1717
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/replace_angle_brackets_in_ant/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。