1

私はAntでこれを行おうとしています:

<echo message="&#27;[44;1;37mSuccess!&#27;[m" />

しかし、それは機能しません:

BUILD FAILED
./build.xml:92: Character reference "&#

どうやってするの?

4

3 に答える 3

5

0x1B文字はXMLコンテンツでは無効です( XMLでは無効な文字)。したがって、いくつかの回避策が必要です。javascriptの回避策を使用しますが、さらに2つの解決策を示します。

javascript

<script language="javascript">
  project.setNewProperty("esc", "\u001b");
</script>
<echo>${esc}</echo>

native2ascii

ファイルに出力する場合は、最初にjavaエスケープを使用して出力し\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
于 2012-10-29T17:44:28.547 に答える
2

単にCDATAを使用してください:

<project>

 <echo><![CDATA[
  &#27;[44;1;37mSuccess!&#27;[m
  ]]>
 </echo>

</project>
于 2012-10-29T22:02:37.917 に答える
0

&はantの特殊文字なので、'に置き換える必要があります

<echo message="&amp;#27;[44;1;37mSuccess!&amp;#27;[m" />
于 2012-10-29T13:53:28.587 に答える