Apple Plist 转换为 Java 数据结构

发布于 2024-11-07 03:12:13 字数 289 浏览 0 评论 0 原文

我有一个程序将从我的服务器上的 .plist 接收其中显示的信息。不过,我将为 PC 制作此程序,并且我将使用 Java 来完成此操作。 Plist 文件不是传统的 XML,因此常见的 XML 解析库不起作用。我找不到任何 plist 特定的解析器,所以我不知道如何继续。我认为我的选择是:

a) 为 plist 文件找到这样的解析器

b) 使用常规 XML 解析器进行解决方法

c) 更改程序从中获取数据的文件(不可取)

是否有其他人有过相关经验Objective-C 以外的语言的 plist?

I have a program that is going to be receiving info displayed in it from a .plist on my server. However, I am going to be making this for PC, and I'm using Java to do so. Plist files aren't conventional XML, so common XML parsing libraries don't work. I can't locate any plist specific parsers, so I am lost on how to continue. The way I see it my options are:

a) Locate such a parser for the plist file

b) Make a workaround using a regular XML parser

c) Change the file the program gets its data from (undesirable)

Has anyone else had any experience with plists in languages other than Objective-C?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

还在原地等你 2024-11-14 03:12:13

正如 @Jochen Bedersdorfer 所指出的, .plist 文件是 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">

附录:在评论中,您问

我拿到的时候不是文本形式吗?

未必。以下是有关该主题的一些历史

As @Jochen Bedersdorfer notes, .plist files are XML with a well-formed DTD. Use plutil to convert them from binary to text form.

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

Addendum: In a comment, you asked

Isn't it text form when I get it?

Not necessarily. Here's some history on the subject.

深海少女心 2024-11-14 03:12:13

为了消除任何混淆:

  1. plist 文件可以是 XML 形式,也可以是二进制形式。
  2. 二进制 plist 当然不是 XML。
  3. XML plist 当然是XML。事实上,它是一个有效的 XML...针对 XML plist 尝试 xmllint
  4. 是的,它的结构有点不传统。正如您所说,它就像
    标题

    描述
  5. 您可以在 OS X 上使用 plutil 将二进制 plist 转换为 XML plist。在通过网络发送之前将其转换为 XML。
  6. 使用常规 XML 解析器,您可以获得 keystring。创建包含这些对的哈希。然后根据key得到字符串。

To remove any confusion:

  1. A plist file can be either in XML or in binary form.
  2. The binary plist is of course not XML.
  3. The XML plist is of course XML. In fact it's a valid XML... try xmllint against an XML plist.
  4. Yes it has slightly unconventional structure. As you say, it's like <dt>title</dt><dd>description</dd>.
  5. You can convert a binary plist to an XML plist using plutil on OS X. Convert it to XML before sending it over the network.
  6. With a regular XML parser you can get key and string. Make a hash containing these pairs. Then you get the string based on the key.
随风而去 2024-11-14 03:12:13

dd-plist 可能会有所帮助。

将本机 java 数据结构序列化为属性列表对象

从属性列表对象反序列化为本机java数据结构

您还可以使用 NSObject.toJavaObject() 方法直接将包含的 NSObject 对象转换为原生 Java 对象。使用此方法,您可以完全避免使用 NSObject 实例。

<dependency>
  <groupId>com.googlecode.plist</groupId>
  <artifactId>dd-plist</artifactId>
  <version>1.26</version>
</dependency>

dd-plist might be helpful.

Serialize native java data structures to property list objects

Deserialize from property list objects to native java data structures

You can also directly convert the contained NSObject objects into native Java objects with the NSObject.toJavaObject() method. Using this method you can avoid working with NSObject instances altogether.

<dependency>
  <groupId>com.googlecode.plist</groupId>
  <artifactId>dd-plist</artifactId>
  <version>1.26</version>
</dependency>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文