2015-07-27 6 views
3

Это должно быть довольно просто. Я хочу, чтобы открыть файл, поиск строки, а затем заменить эту строку со строкой, которая имеет специальные символы в нем: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. 

Должен ли я избегать каждого специального символа для «токена» и «значения», или есть более простой способ?

ответ

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=''>"/> 

По крайней мере, ваш муравей файл будет хорошо сформирован, но на самом деле, делает Заменяет против файла XML, рассматривая его как текст является немного рубить. Лучше было бы использовать XML-инструмент (например, XSLT) для внесения таких изменений.

Смежные вопросы