Редактирование файлов.plist - допускаются ли одинарные кавычки в виде строк?
В частности, я редактирую файл 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>Georgia, Times, 'Times New Roman', serif</string>
Но CSSEdit теряет популярность, когда я редактирую файл как таковой
3 ответа
Если вы редактируете XML-лист с помощью какого-либо текстового редактора, вам нужно экранировать символы, как в любом XML. Основные персонажи, на которые стоит обратить внимание:
<(меньше чем), экранированный как & lt;
> (больше чем), экранированный как & gt;
& (амперсанд), экранированный как & amp;
' (апостраф), сбежавший как & apos;
" (знак кавычки), экранированный как & quot;
Так что в вашем примере вы хотели бы
<string>Georgia, Times, 'Times New Roman', serif</string>
Вы также можете использовать такой инструмент, как редактор списков свойств Apple, который входит в их бесплатные инструменты разработчика Xcode, или сторонний продукт, такой как PlistEdit Pro, оба из которых позаботятся о том, чтобы за вами убегал персонаж.
Ты можешь использовать plutil
проверить синтаксис ваших списков. (Обратите внимание, что это не будет проверять, будет ли приложение понимать, что вы сделали с его списком...)
Существует 3 типа списков, и правила экранирования зависят от типа, с которым вы работаете. Наиболее распространенной формой являются списки XML, которые требуют экранирования определенных вещей. В общем случае вы можете использовать правила экранирования XML внутри строковых элементов. Если вы работаете со старыми списками в стиле NextStep, я считаю, что гораздо меньше нужно избегать, но мне нужно было бы изучить детали, чтобы быть уверенным в том, какие правила существуют. Третий тип - бинарный, я уверен, что вы не редактируете его с помощью CSSEdit.