Ответ 1
Попробуйте следующее:
"
Есть ли escape-символ для двойной кавычки в xml? Я хочу написать тег вроде:
<parameter name="Quote = " ">
но если я поставлю ", то это означает, что строка закончилась. Мне нужно что-то вроде этого (С++):
printf("Quote = \" ");
Есть ли символ для записи перед двойной цитатой, чтобы избежать его?
Попробуйте следующее:
"
Вот общие символы, которые должны быть экранированы в XML, начиная с двойных кавычек:
"
) экранируются до "
&
) экранируется до &
'
) экранируются до '
<
) сбрасывается до <
>
) сбрасывается до >
Другие ответили в терминах того, как обрабатывать конкретное экранирование в этом случае.
Более широкий ответ - не пытаться сделать это самостоятельно. Используйте XML API - существует множество доступных практически для каждой современной платформы программирования.
XML API будут обрабатывать такие вещи, как это для вас автоматически, что делает его намного сложнее ошибиться. Если вы сами не пишете XML-API, вам редко приходится беспокоиться о таких деталях.
Нет никакого escape-символа как такового, вместо этого вы можете использовать "
или даже <![CDATA["]]>
для представления символа "
.
Если вам просто нужно быстро что-то попробовать, вот быстрое и грязное решение. Используйте одинарные кавычки для значения атрибута:
<parameter name='Quote = " '>
Новый, улучшенный ответ на старый, часто задаваемый вопрос...
Двойная цитата ("
) может отображаться без экранирования:
В текстовом контенте XML:
<NoEscapeNeeded>He said, "Don't quote me."</NoEscapeNeeded>
В атрибутах XML, разделенных одинарными кавычками ('
):
<NoEscapeNeeded name='Pete "Maverick" Mitchell'/>
Примечание: переключение на одинарные кавычки ('
) также не требует экранирования:
<NoEscapeNeeded name="Pete 'Maverick' Mitchell"/>
Двойная цитата ("
) должна быть экранирована:
В атрибутах XML, разделенных двойными кавычками:
<EscapeNeeded name="Pete "Maverick" Mitchell"/>
Двойная кавычка ("
) должна быть экранирована как "
в XML только в очень ограниченном контексте.
В С++ вы можете использовать API-интерфейс EscapeXML ATL. Это правильный способ обработки специальных символов...
Вы можете попробовать использовать обратную косую черту, за которой следует "u", а затем значение unicode для символа, например, значение юникода двойной кавычки
"- > U + 0022
Поэтому, если вы устанавливаете его как часть текста в XML в android, он будет выглядеть примерно так,
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text=" \u0022 Showing double quotes \u0022 "/>
Это создаст текст в TextView примерно что-то вроде этого
"Отображение двойных кавычек"
Вы можете найти unicode для большинства символов и символов здесь unicode-table.com/en