Редактирование файлов .plist – разрешены ли одинарные кавычки в качестве строк?

StackOverflow https://stackoverflow.com/questions/256554

  •  05-07-2019
  •  | 
  •  

Вопрос

В частности, я редактирую файл AutoCompletion.plist для CSSEdit (если это вообще имеет значение).

Мой вопрос: есть ли в элементах STRING какие-либо символы, которые необходимо экранировать?пространства?кавычки?

РЕДАКТИРОВАТЬ:Для ясности: я не использую CSSEdit для редактирования файла — скорее, файл является частью пакета CSSEdit.Я использую TextMate для редактирования файла (хотя «Property List Editor.app» — еще один вариант), и он находится в формате XML.Вот фрагмент файла AutoCompletion.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>font-family</key>
<array>
    <string>Arial</string>
    <string>Helvetica</string>
    <string>Georgia</string>
    <string>serif</string>
    <string>sans-serif</string>
    <string>cursive</string>
    etc...

Я хотел бы добавить STRING с пробелами и одинарными кавычками, например:

<string>Georgia, Times, 'Times New Roman', serif</string>

Но CSSEdit выходит из строя, когда я редактирую файл как таковой.

Это было полезно?

Решение

Если вы редактируете список XML с помощью какого-либо текстового редактора, вам нужно будет экранировать символы, как и в любом XML.Основные персонажи, на которых стоит обратить внимание:

< (меньше чем), экранируется как <

> (больше), экранировано как >

& (амперсанд), экранируется как &

' (апостроф), экранировано как '

" (кавычка), экранировано как "

Итак, в вашем примере вы хотели бы

<string>Georgia, Times, &apos;Times New Roman&apos;, serif</string>

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

Другие советы

Вы можете использовать plutil чтобы проверить синтаксис ваших списков.(Обратите внимание, что это не проверит, поймет ли приложение, что вы сделали с его списком...)

Существует три типа списков, и правила экранирования зависят от типа, с которым вы работаете.Наиболее распространенной формой являются списки XML, которые требуют экранирования определенных элементов.В общем, вы можете использовать правила экранирования XML внутри строковых элементов.Если вы работаете со старыми списками в стиле NextStep, я считаю, что экранировать нужно гораздо меньше, но мне нужно будет просмотреть детали, чтобы быть уверенным в том, каковы правила.Третий тип — двоичный, я вполне уверен, что вы не редактируете его с помощью CSSEdit.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top