Apple Plist转换为Java数据结构

时间:2011-05-13 04:49:58

标签: java objective-c plist xml-parsing

我有一个程序将从我服务器上的.plist中接收显示在其中的信息。但是,我将为PC制作这个,我正在使用Java这样做。 Plist文件不是传统的XML,因此常见的XML解析库不起作用。我找不到任何plist特定的解析器,所以我迷失了如何继续。我认为我的选择方式是:

a)找到plist文件的解析器

b)使用常规XML解析器

进行解决方法

c)更改程序从(不需要的)

获取数据的文件

有没有其他人使用Objective-C以外的其他语言使用plist?

2 个答案:

答案 0 :(得分:3)

正如@Jochen Bedersdorfer指出的那样,.plist文件是具有格式良好的DTD的XML。使用plutil将它们从二进制转换为文本格式。

<?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">

附录:在评论中,你问了

  

当我拿到它时,它不是文本形式吗?

不一定。这是关于这个主题的一些history

答案 1 :(得分:3)

消除任何混淆:

  1. plist文件可以是XML格式,也可以是二进制格式。
  2. 二进制plist当然不是XML。
  3. XML plist当然是XML。实际上它是一个有效的XML ...对XML plist尝试xmllint
  4. 是的,它有一些非常规的结构。如你所说,它就像<dt>title</dt><dd>description</dd>
  5. 您可以在OS X上使用plutil将二进制plist转换为XML plist。在通过网络发送之前将其转换为XML。
  6. 使用常规XML解析器,您可以获得keystring。制作包含这些对的哈希。然后你会根据密钥获得字符串。