编辑 .plist 文件 - 是不是允许将单引号用作字符串?

Posted

技术标签:

【中文标题】编辑 .plist 文件 - 是不是允许将单引号用作字符串?【英文标题】:Editing .plist files - are single quotes allowed as strings?编辑 .plist 文件 - 是否允许将单引号用作字符串? 【发布时间】:2008-11-02 05:26:36 【问题描述】:

特别是,我正在为 CSSEdit 编辑 AutoCompletion.plist 文件(如果这很重要的话)。

我的问题是,是否有任何带有 STRING 元素的字符需要转义?空间?引号?

编辑: 为了清楚起见,我没有使用 CSSEdit 来编辑文件——而是该文件是 CSSEdit 包的一部分。我正在使用 TextMate 来编辑文件(尽管“Property List Editor.app”是另一种选择)并且它是 XML 格式的。这是 AutoCompletion.plist 文件中的一个 sn-p:

<?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 变得混乱了

【问题讨论】:

【参考方案1】:

如果您正在使用某种文本编辑器编辑 XML plist,则需要像在任何 XML 中一样对字符进行转义。需要注意的基本字符是:

>(大于),转义为 >

&(和号),转义为 &

'(撇号),转义为 '

"(引号),转义为 "

所以在你的例子中,你会想要

&lt;string&gt;Georgia, Times, &amp;apos;Times New Roman&amp;apos;, serif&lt;/string&gt;

您还可以使用免费的Xcode developer tools 中包含的Apple 的Property List Editor 之类的工具,或PlistEdit Pro 之类的第三方产品,这两者都会为您处理所有字符转义。

【讨论】:

谢谢,布赖恩。这就是我一直在寻找的技术。【参考方案2】:

您可以使用plutil 检查您的 plist 的语法。 (请注意,这不会验证应用程序是否会理解您对其 plist 所做的事情......)

【讨论】:

我认为问题一定是CSSEdit要求plist不能有空格或引号。【参考方案3】:

有 3 种类型的 plist,转义规则取决于您使用的类型。最常见的形式是 XML plist,它确实需要对某些内容进行转义。通常,您可以在字符串元素中使用 XML 转义规则。如果您正在使用较旧的 NextStep 样式 plist,我相信需要转义的内容要少得多,但我需要查看详细信息以确定规则是什么。第三种是二进制的,我很确定你不是用 CSSEdit 编辑的。

【讨论】:

以上是关于编辑 .plist 文件 - 是不是允许将单引号用作字符串?的主要内容,如果未能解决你的问题,请参考以下文章

$_POST 正在删除单引号(或如何将单引号放入 $_POST)[重复]

PHP 如何将单引号字符串与双引号字符串连接起来。

Python如何将单引号转换为双引号以格式化为json字符串

用引号填充 plist

将单引号转换为字符串中的转义单引号

VS Code Auto Indent / Code Formatting 将单引号改为双引号