Редактирование файлов.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, &apos;Times New Roman&apos;, serif</string>

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

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

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

Другие вопросы по тегам