gpt4 book ai didi

php - 你能在 PHP 中使用 SimpleXML 来解析 plist 文件吗?

转载 作者:数据小太阳 更新时间:2023-10-29 02:29:14 26 4
gpt4 key购买 nike

我一直使用 PHP 的 SimpleXML 来解析 XML 文件,但我现在面临着尝试解析 plist 文件的挑战。

取自 Apple Mac Developer Library 的示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Year Of Birth</key>
<integer>1965</integer>
<key>Pets Names</key>
<array/>
<key>Picture</key>
<data>
PEKBpYGlmYFCPA==
</data>
<key>City of Birth</key>
<string>Springfield</string>
<key>Name</key>
<string>John Doe</string>
<key>Kids Names</key>
<array>
<string>John</string>
<string>Kyra</string>
</array>
</dict>
</plist>

在这种情况下,事情很简单:例如,如果我想获得出生年份,我只需执行 $xml -> dict -> integer 因为有此列表中只有一个整数。

但是,我如何使用键名返回字段的值(例如选择键为 Year of Birth 的整数)?

我可以只使用元素的顺序,但理想情况下我正在寻找一种解决方案,如果元素将来在 XML 文件中重新排列,该解决方案将继续有效。

最佳答案

下面的 XPath 会为你做这件事:

/plist/dict/key[text()="Year Of Birth"]/following-sibling::*[1]

使用 SimpleXml

$plist = simplexml_load_string($xml);
$query = '/plist/dict/key[text()="Year Of Birth"]/following-sibling::*[1]';
$results = $plist->xpath($query);
echo (string) $results[0]; // 1965

关于php - 你能在 PHP 中使用 SimpleXML 来解析 plist 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35343505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com