在 perl 中使用 XPath 读取 Mac Plist 布尔值

Posted

技术标签:

【中文标题】在 perl 中使用 XPath 读取 Mac Plist 布尔值【英文标题】:Using XPath in perl to read Mac Plist booleans 【发布时间】:2013-07-03 18:36:11 【问题描述】:

我有一个 PLIST,它在转换为 XML 时有这样的片段;

<dict>
    <key>application-identifier</key>
    <string>com.something.application</string>
    <key>get-task-allow</key>
    <false/>
    <key>keychain-access-groups</key>
    <array>
        <string>random.*</string>
    </array>
</dict>

我正在使用 perl XML::XPath 来读取此内容,并且可以轻松获取应用程序标识符;

 my $app_id = $xp->findvalue('//key[text()="application-identifier"]/following-sibling::*[1]');

但我一直在阅读 get-task-allow 的值。例如,这似乎不起作用;

my $gettask = $xp->findvalue('//key[text()="get-task-allow"]/following-sibling::*[1]');

任何人都可以协助使用正确的 XPath 搜索表达式来读取 这是我希望为 get-task-allow 键读取的值吗?

【问题讨论】:

【参考方案1】:

你想要一个节点

my ($gettask) = $xp->findnodes(
    '//key[text()="get-task-allow"]/following-sibling::*[1]');

say $gettask->nodeName();

【讨论】:

【参考方案2】:

啊哈......所以下面至少表明我在正确的地方;

$xp->findnodes_as_string('//key[text()="get-task-allow"]/following-sibling::*[1];

【讨论】:

以上是关于在 perl 中使用 XPath 读取 Mac Plist 布尔值的主要内容,如果未能解决你的问题,请参考以下文章

Perl,如何解析 XML 文件,xpath

Xpath 在 Perl 中不工作,但在浏览器中工作

(perl) 终端 (Mac) 如何在 @INC 中找到 LWP...?

如何在可用时从标准输入读取行(否则阻止)?

如何从 Perl 快速访问许多大型 CSV 文件中的数据?

使用XPath查询读取XML标签