экранирование специального символа в xml

#java #xml #escaping #special-characters

#java #xml #экранирование #специальные символы

Вопрос:

Я запускаю этот запрос в следующем XML-файле:

 <?xml version="1.0" encoding="UTF-8"?>
    ..
    ...
    <query> 
         update tableX set colName='$ClassService.getParameter("param1")$' where id = '0'
    </query>
    ...
  

Я получаю следующую ошибку:

ОШИБКА]: возникло исключение, завершающееся. java.lang.Исключение IllegalArgumentException: исключение при разборе или оценке ClassService.getParameter(«param1»)

Как правильно «экранировать»?

Комментарии:

1. В XML не нужно экранировать " символы, если вы не найдете их в атрибутах. Я думаю, вы можете написать напрямую ClassService.getParameter("param1")

2. Ну, я получил ту же ошибку

3. Так что, я думаю, ваша проблема заключается не в экранировании XML. Ваш XML оценивается и используется в другом месте и вызывает исключение. Возможно, вы можете отправить полную трассировку стека?

Ответ №1:

Как насчет того, чтобы просто использовать для этого раздел CDATA?

  <![CDATA[
 Within this Character Data block I can
 use double dashes as much as I want (along with <, amp;, ', and ")
 *and* %MyParamEntity; will be expanded to the text
 "Has been expanded" ... however, I can't use
 the CEND sequence (if I need to use it I must escape one of the
 brackets or the greater-than sign).
 ]]>
  

Или это не соответствует вашим требованиям?

Так что это будет выглядеть примерно так:

 <?xml version="1.0" encoding="UTF-8"?>
..
...
<query> 
     <![CDATA[
     update tableX set colName='$ClassService.getParameter("param1")$' where id = '0'
     ]]>
</query>
...