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

时间:2013-07-03 18:36:12

标签: xml perl xpath plist

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

2 个答案:

答案 0 :(得分:2)

您想要一个节点

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

say $gettask->nodeName();

答案 1 :(得分:1)

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

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