Escape-символ двойной кавычки в XML - PullRequest
87 голосов
/ 03 августа 2009

Есть ли escape-символ для двойной кавычки в xml? Я хочу написать тег как:

<parameter name="Quote = " ">

но если я поставлю ", значит, строка закончилась. Мне нужно что-то вроде этого (c ++):

printf("Quote = \" ");

Есть ли символ, который нужно написать перед двойной кавычкой, чтобы избежать его?

Ответы [ 8 ]

146 голосов
/ 03 августа 2009

Попробуйте это:

&quot;
109 голосов
/ 29 июля 2013

Вот общие символы, которые необходимо экранировать в XML, начиная с двойных кавычек:

  1. двойные кавычки (") экранируются до &quot;
  2. амперсанд (&) экранируется до &amp;
  3. одинарные кавычки (') экранируются до &apos;
  4. меньше (<) экранируется до &lt;
  5. больше (>) экранируется до &gt;
27 голосов
/ 03 августа 2009

Другие ответили с точки зрения того, как справиться с конкретным побегом в этом случае.

Более широкий ответ - не пытаться сделать это самостоятельно. Используйте XML API - существует множество доступных практически для каждой существующей современной платформы программирования.

XML API будут обрабатывать такие вещи для вас автоматически, что делает лот труднее ошибиться. Если вы сами не пишете XML API, вам редко придется беспокоиться о таких деталях.

7 голосов
/ 28 ноября 2017

Новый, улучшенный ответ на старый, часто задаваемый вопрос ...

Когда избегать двойных кавычек в XML

Может появляться двойная кавычка (") без экранирования :

  • В текстовом формате XML:

    <NoEscapeNeeded>He said, "Don't quote me."</NoEscapeNeeded>
    
  • В атрибутах XML, разделенных одинарными кавычками ('):

    <NoEscapeNeeded name='Pete "Maverick" Mitchell'/>
    

    Примечание: переключение на одинарные кавычки (') также не требует экранирования:

    <NoEscapeNeeded name="Pete 'Maverick' Mitchell"/>
    

Двойная кавычка (") необходимо экранировать :

  • В атрибутах XML, разделенных двойными кавычками:

    <EscapeNeeded name="Pete &quot;Maverick&quot; Mitchell"/>
    

Итог

Двойная кавычка (") должна экранироваться как &quot; в XML только в очень ограниченных контекстах.

7 голосов
/ 03 августа 2009

Нет, здесь нет escape-символа, вместо этого вы можете использовать &quot; или даже <![CDATA["]]> для представления символа ".

4 голосов
/ 17 января 2013

Если вам просто нужно попробовать что-то быстро, вот быстрое и грязное решение. Используйте одинарные кавычки для значения атрибута :

<parameter name='Quote = " '>
2 голосов
/ 13 ноября 2012

В C ++ вы можете использовать EscapeXML ATL API. Это правильный способ обработки специальных символов ...

1 голос
/ 12 ноября 2017

Вы можете попробовать использовать обратную косую черту, за которой следует «u», а затем значение Unicode для символа, например значение Unicode для двойной кавычки:

"-> U + 0022

Поэтому, если бы вы устанавливали его как часть текста в XML в Android, это выглядело бы примерно так:

<TextView
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:text=" \u0022 Showing double quotes \u0022 "/>

Это приведет к появлению текста в TextView примерно как этот

"Отображение двойных кавычек"

Юникод с большинством символов и символов можно найти здесь www.unicode-table.com/en

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...