0

我有一个 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 搜索表达式来读取 <false/> 这是我希望为 get-task-allow 键读取的值吗?

4

2 回答 2

2

你想要一个节点

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

say $gettask->nodeName();
于 2013-07-03T20:38:39.037 回答
1

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

$xp->findnodes_as_string('//key[text()="get-task-allow"]/following-sibling::*[1];
于 2013-07-03T18:49:25.260 回答