[英]Parsing .plist Files to plain XML C#
我正在尝试使用c#来读取我的Apple Safari历史记录,该文件存储在plist文件中,但是我总是遇到错误而且我不确定正确的方法是什么。 我试图执行的代码是这样的:
XmlDocument xmd = new XmlDocument();
xmd.LoadXml(@"C:\Users\Oran\AppData\Roaming\AppleComputer\Safari\History.plist");
我总是得到以下错误: "Data at the root level is invalid. Line 1, position 1."
有谁知道这段代码有什么问题,并建议读取plist文件的最佳方法是什么?
看起来Apple Safari history.plist是二进制plist。 我找到了一个很棒的项目:
https://github.com/animetrics/PlistCS
从自述文件:
这是一个C#Property List(plist)序列化库(MIT许可证)。 它支持plist格式的XML和二进制版本。
试试这个,每次都很好;-)
xmd.Load(...)
您使用的那个加载来自字符串而不是文件的xml数据。
plist不一定是XML。 有四种不同的序列化方法 - 旧式(用于NeXT;不再使用),XML,二进制和JSON(10.7中的新增功能)。 出于效率原因,Safari的History.plist很可能是二进制的。
如果我没弄错的话,Safari for Windows确实plutil.exe
了Common Files \\ Apple Application Support中的plutil.exe
。 您可以使用plutil -convert xml1 SOME_FILE.plist
来转换文件。
问题出在第二行,说
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.