我正在尝试在 Ant 中执行此操作:
<echo message="[44;1;37mSuccess![m" />
但它不起作用:
BUILD FAILED
./build.xml:92: Character reference "&#
怎么做?
XML 内容中的 0x1B 字符无效 ( Invalid Characters in XML )。所以你需要一些解决方法。我会使用 javascript 解决方案,但我还提供了 2 个额外的解决方案:
<script language="javascript">
project.setNewProperty("esc", "\u001b");
</script>
<echo>${esc}</echo>
如果你想在一个文件中输出,那么你可以先使用 java escape 输出它\u001b
,然后使用反向Native2Ascii例程转换它。无论选择何种编码,它总是解码\u
序列。
<echo file="a.enc">\u001b</echo>
<native2ascii includes="a.enc" ext=".txt" dest="${basedir}"
encoding="iso-8859-1" reverse="true" />
最后,您可能在文件中有不幸的字符串常量:
<property file="prop.txt" />
<echo>myEsc:${myEsc}</echo>
而prop.txt
内容是:
myEsc=\u001b
只需使用 CDATA :
<project>
<echo><![CDATA[
[44;1;37mSuccess![m
]]>
</echo>
</project>
& 是 ant 中的一个特殊字符,所以你应该用 ' 替换它
<echo message="&#27;[44;1;37mSuccess!&#27;[m" />