在实现iOS的APP在线安装时,需要plist文件。
我这里对plist的更新操作是:
读取plist文件,通过xml-js转成json字符串,对json字符串操作后,再转成xml字符串,写入plist文件,完成对plist的更新。
fs.readFile(filepath, 'utf-8',
function (err, data) {
if(err) console.log(err);
var result1 = convert.xml2json(data, {compact: true, spaces: 4});
let a = JSON.parse(result1);
const aa = a.plist.dict.array.dict;
aa.array.dict.string[1]._text = res[0].DownloadUrl;
aa.dict.string[1]._text = res[0].Version;
aa.dict.string[3]._text = res[0].Note;
const r = convert.json2xml(JSON.stringify(a), {compact: true, spaces: 4});
fs.writeFile(filepath, r, function(err, d) {
if(err) console.log(err);
console.log('ok')
})
})
但发现更新后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>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>http://192.168.1.1/app.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.*.*.*</string>
<key>bundle-version</key>
<string>1.0.</string>
<key>kind</key>
<string>software</string>
<key>releaseNotes</key>
<string>更新内容</string>
<key>title</key>
<string>APP名称</string>
</dict>
</dict>
</array>
</dict>
</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>items</key>
<array>
<dict>
<key>assets</key>
<key>metadata</key>
<array>
<dict>
<key>kind</key>
<key>url</key>
<string>software-package</string>
<string>http://192.168.1.1/app.ipa</string>
</dict>
</array>
<dict>
<key>bundle-identifier</key>
<key>bundle-version</key>
<key>kind</key>
<key>releaseNotes</key>
<key>title</key>
<string>com.*.*.*</string>
<string>1.0.</string>
<string>software</string>
<string>更新内容</string>
<string>APP名称</string>
</dict>
</dict>
</array>
</dict>
</plist>
请问该如何对plist进行操作,是应该使用哪个插件,还是怎样处理?
PS:难道最后要拼接字符串后直接写入而不是读取后更新
对plist的操作还是用python方便一些,我之前想用java处理实在找不到方便的方法,最后用的java调用python的bplist库来处理plist,你可以看看这种方式。