Редактирование файлов .plist - допускаются ли одинарные кавычки в виде строк? - PullRequest
4 голосов
/ 02 ноября 2008

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

У меня вопрос: есть ли символы с элементами STRING, которые нужно экранировать? пространства? цитаты?

EDIT: Просто чтобы прояснить, я не использую 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 теряет популярность, когда я редактирую файл как таковой

Ответы [ 3 ]

16 голосов
/ 02 ноября 2008

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

<(меньше чем), экранированный как & lt; </p>

> (больше чем), экранированный как & gt;

& (амперсанд), экранированный как & amp;

& APOS; (апостраф), сбежавший как '

"(знак кавычки), экранированный как & quot;

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

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

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

2 голосов
/ 02 ноября 2008

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

0 голосов
/ 02 ноября 2008

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

...