#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>
...