Как избежать двойных кавычек в значениях атрибутов XML?

144

Из следующих испытаний

<tag attr="\"">
<tag attr="<![CDATA["]]>">
<tag attr='"'>

Только последний работает для анализатора XML, который я использую здесь. Есть ли альтернатива?

Джадер Диас
источник
1
&quot;это ответ; вот объяснение .
kjhughes
Возможный дубликат: какие символы нужно экранировать в XML-документах?
Питер Мортенсен

Ответы:

229

Ты можешь использовать &quot;

Сачин Шанбхаг
источник
3
При именовании переменных, функций, атрибутов и т. Д. Явное и более длинное соглашение об именах лучше, чем акронимы или сокращенное; Я всегда предпочитаю ясность краткости - это мое незапрошенное мнение.
Даниэль Соколовски
1
Я согласен с Дэниелом. Краткость может сэкономить вам 1 секунду набора текста, но затем люди должны потратить 10 минут, пытаясь понять, что происходит.
NL3294
1
@ Даниэль Соколовски: Что вы двое имеете в виду? Есть ли какой-то отсутствующий контекст (например, удаленные комментарии)?
Питер Мортенсен
Должно быть @PeterMortensen, сейчас я забыл, это было почти 7 лет назад :)
Даниэль Соколовски
54

Из спецификации XML :

Чтобы значения атрибутов могли содержать как одинарные, так и двойные кавычки, апостроф или символ одинарной кавычки (') может быть представлен как "& apos;", а символ двойной кавычки (") как" & quot; ".

Вим Коенен
источник
18

Символ двойной кавычки ( ") может быть экранирован как &quot;, но вот остальная часть истории ...

В этом контексте необходимо использовать двойные кавычки :

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

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

Символ двойной кавычки не нужно экранировать в большинстве случаев:

  • В текстовом содержимом XML:

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

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

    Точно так же ( ') не требует экранирования, если ( ") используются для разделителей значений атрибутов:

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

Смотрите также

Kjhughes
источник
8

Страница преобразования String на сайте Coder's Toolbox удобна для кодирования более чем небольшого количества кода HTML или XML для включения в качестве значения в элемент XML.

Кенни Эвитт
источник