Каков принятый способ хранить заключенные в кавычки данные в XML?

На самом деле то, что мне было нужно, было легко достижимо. Все, что мне нужно было сделать, это добавить замену к моему оператору возврата в функции

return JSON.stringify(file_data).replace(/"(\w+)"\s*:/g, '$1:');
18
задан Michael Burr 29 September 2008 в 21:04
поделиться

7 ответов

Двойные кавычки в текстовых узлах могут быть представлены или как символ двойной кавычки или как " объект. Двойные кавычки в значениях атрибута могут быть представлены как символ двойной кавычки, если значение разграничено одинарными кавычками, и наоборот; иначе выйдите из них как "

, Это только релевантно, если Вы a) редактирование XML в текстовом редакторе не XML осведомленном или b) создание XML программно посредством обработки строк. Вообще говоря, необходимо избежать (a), если Вы действительно не знаете то, что Вы делаете или по крайней мере имеете способ проверить отмеченность Вашего XML после того, как редактирование завершено.

И необходимо избежать (b) при всех обстоятельствах. Никогда не создавайте XML посредством обработки строк; всегда используйте DOM или некоторый другой инструмент.

5
ответ дан 30 November 2019 в 06:12
поделиться

Ваш корректный ответ является & C как эти " не символ, который должен быть закодирован в данных элемента.

необходимо всегда быть XML кодирование символов такой как >, <, и &, чтобы гарантировать, чтобы у Вас не было проблем, если они не в разделе CDATA. Это ключевые объекты, которые будут касаться для данных элемента.

При разговоре об атрибутах необходимо затем также остерегаться ' и " внутренние значения атрибута в зависимости от типа символа, который Вы используете для окружения значения.

я нашел, что часто кодирование " и ' является лучшей идеей во всех аспектах, поскольку время от времени помогает при преобразовании в другие форматы, где " или ' мог бы вызвать проблемы там также.

28
ответ дан 30 November 2019 в 06:12
поделиться

Корректным ответом является 'C'.

Одинарные кавычки действительно не вызывают проблему, но необходимо остерегаться амперсандов и открывающих угловых скобок.

0
ответ дан 30 November 2019 в 06:12
поделиться

Вы не должны волноваться о том, как вещи кодируются в Вашем XML. Необходимо всегда пользоваться надлежащей библиотекой для генерации XML-документов. Существуют слишком многие глюк к XML для разбираний в нем собой. Я видел, что тонны недопустимых XML-документов прибывают мой путь, потому что кто-то думал, что они могли генерировать надлежащий XML сами, не пользуясь библиотекой. Все главные языки программирования, используемые сегодня, имеют библиотеки XML.

4
ответ дан 30 November 2019 в 06:12
поделиться

Символьные данные в элементах XML могут содержать символы кавычки, не выходя из них. Единственные символы, которые не разрешены в элементе XML, являются '<'; '&'; и'>' (и'>' символ только запрещен, если это - часть"]]>" последовательность символов.

Но это вовсе не значит, что выход из кавычек не является хорошей идеей - я просто говорю, что не выход из кавычек является совершенно допустимым XML. Посмотрите раздел 2.4 - "Символьные Данные и Разметка" в спецификации XML.

Так и (a) и (c) в порядке.

Насколько атрибуты затронуты, значения атрибута могут быть включены или в одинарные или в двойные кавычки, поэтому если это содержит один, или другой можно использовать противоположный для включения значения. Если это будет содержать обоих, то необходимо будет использовать символьную сущность для одной или обоих.

Насколько 'курчавые кавычки' затронуты, если Вы говорите о специальном предложении, неASCII заключает тот Word в кавычки, иногда преобразовывает кавычки в - у них нет особого значения в XML, таким образом, можно сделать, какой бы ни (но они не могут использоваться для включения значений атрибута ". Необходимо будет также удостовериться, что кодировка символов для документа корректна, таким образом, они интерпретируются правильно.

14
ответ дан 30 November 2019 в 06:12
поделиться

, Например, для узла, который корректен?

сама спецификация XML не говорит об узлах (кроме при сравнении синтаксиса DTD с конечным автоматом regex). Узел DOM может быть атрибутом, элементом, текстом или любыми из других типов узлов.

Внутренняя часть текстовый узел, Вам только нужно к символам ESC, которые синтаксический анализатор интерпретировал бы как запуск другого узла - таким образом, Вы выходите & и < как & усилитель; и & лейтенант; .

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

Внутренняя часть узел атрибута, необходимо выйти меньше и амперсанд как прежде, и также какой бы ни заключают Вам в кавычки, раньше разграничивал атрибут.

<foo attribute="'ok'" attribute2='"also-ok"' attribute3="&quot;needed&quot;"/>

обычно легче привыкнуть только использовать один тип и всегда выходить из него. Я пишу довольно мало XSLT и пользу с помощью "снаружи и 'внутри:

<xsl:value-of select="person[@name = 'bob']"/>

, Если Вы становитесь параноиками с выходом, XPath становится менее читаемым:

<xsl:value-of select="person[@name = &apos;bob&apos;"/>

, Если (c), это действительно соответствующий для смешивания HTML & XML?

XML определяет именованные сущности ампер , gt, лейтенант , apos, & кавычка

HTML определяет намного больше объектов.

Вы можете и должны использовать именованные сущности XML в XML вместо использования числового объекта.

лейтенант Escape объекта < и должен использоваться в тексте и значениях атрибута. ампер Escape объекта & и должен использоваться в тексте и значениях атрибута. apos и Escape объектов кавычки ' и " и должен использоваться в значениях атрибута. объект gt немного бесполезен - почти никогда нет синтаксического требования для выхода > в XML. Возможно,> только согласился работать с < если это получило равную тарификацию.

другой я использую много в XSLT, который генерирует исходный код, & #xa; , который вставляет новую строку. & nl; было бы больше использования, чем [1 127] & gt;

Точно так же, как Вы обрабатываете единственные и изогнутые кавычки?

XML разработан для повышения текста Unicode, и изогнутые кавычки не имеют никакого особого значения в нем. Однако кодированию, используемому для и XML-документ весьма свойственно быть неправильно истолкованным в дикой природе. Таким образом, если это находится в закрытой среде и может гарантировать корректное кодирование Unicode в производителе и потребителе затем, я только что поместил его в XML. Иначе используйте объект цифрового символа. That, верный для любого символа с кодовой точкой выше 127 - существует ничего специального об изогнутых кавычках.

4
ответ дан 30 November 2019 в 06:12
поделиться

Это зависит действительно. Если все, что Вы хотите сделать, имеют кавычки в Вашей строке XML, то 'A'.

, Но если там означает или необходимо абстрагировать кавычку (i18n, например), XML предоставляет более богатые опции. Например:

<name>
  <given>Jesse</given>
  <family>Ventura</family>
  <nickName>the Body</nickName>
</name>

Излишество во многих ситуациях. Но если бы необходимо правильно обработать многие из мира, варьировался - и часто непоследовательный - схемы именования, я думал бы о кодировании имен вдоль этих строк. XML является большим для этого.

0
ответ дан 30 November 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: