如何解决Ruby阅读/保存plist:如何保持字符串缩进?
我正在使用Ruby的gem plist
更新plist文件,并保存其默认格式后会用换行符将字符串值断开:
之前:
<dict>
<key>message</key>
<string>This is the first line.
this should be the second line.</string>
</dict>
之后:
<dict>
<key>message</key>
<string>This is the first line.
this should be the second line.</string>
</dict>
当我在iOS应用中阅读消息时,消息显示为:
This is the first line.
this should be the second line.
但是,默认格式显示为:
This is the first line.
this should be the second line.
有没有办法保持缩进不变? (我知道plist
gem可让您指定要使用的缩进(默认为制表符),但它适用于使用缩进的每种情况。
谢谢!
解决方法
没有minimal reproducible example的情况下,任何人最多只能猜测你到底在做什么才能导致这个结果。
我的猜测:您必须查看how the gem works。值得注意的是,检查它如何实现IndentedString#<<
。
gem实现了多种“写入值”的方法,我敢打赌,无论您使用的是什么,block.call
都会返回一个数组,其单个元素将为always be independently indented。
尝试使用raw verbatim String
values之类的其他生成方法之一来输出未缩进的值。
如果格式不是您的问题,您可以使用 plist_lite。
例如,运行以下命令:
ruby -rplist_lite -e 'puts PlistLite.dump(PlistLite.load($stdin.read))' <<EOS
<?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>message</key>
<string>This is the first line.
this should be the second line.</string>
</dict>
</plist>
EOS
输出:
<?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>message</key><string>This is the first line.
this should be the second line.</string></dict></plist>
不像plist
,plist_lite
的设计非常简单,没有格式化或编组等花哨的功能,只有2个API,PlistLite#load
和PlistLite#dump
. (界面类似于内置的 JSON
或 YAML
)。
plist_lite
比 plist
快 5 倍以上,因为它是用 C 编写的。如果您了解性能,我想您可以尝试一下。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。