Logsという名前のフォルダーがあります。このフォルダーには、Run 1、Run 1(1)、Run 2(2)などのフォルダーがいくつか含まれています。これらの各フォルダーには、解析する必要のあるplistファイルが含まれています。しかし、ファイルを開くことができません。私は以下のコードを実行しています:
my $count = 0;
my $path = "Logs/";
for my $file (glob("${path}*/*Results.plist")) {
# initialize parser object and find insances of Fail
my $xp = XML::XPath->new(filename=>$file);
my @nodeset = $xp->find('/dict/array/dict/string[1]');
foreach my $element (@nodeset){
if ($element->string_value == "Fail") {
$count++;
}
}
}
print $count;
編集:「文字列」の子ノードで「失敗」を探す必要があります。plistファイルには4つの失敗がありますが、現在のコードは2つしか返していません。
plistファイルの構造は次のとおりです。
<plist version="1.0">
<dict>
<key>All Samples</key>
<array>
<dict>
<key>LogType</key>
<string>Fail</string>
<key>Message</key>
<string>Text</string>
<key>Timestamp</key>
<date>2012-10-17T08:01:51Z</date>
<key>Type</key>
<integer>4</integer>
</dict>
<dict>
<key>LogType</key>
<string>Fail</string>
<key>Message</key>
<string>An error occurred while trying to run the script.</string>
<key>Timestamp</key>
<date>2012-10-17T08:20:46Z</date>
<key>Type</key>
<integer>7</integer>
</dict>
<dict>
<key>LogType</key>
<string>Pass</string>
<key>Message</key>
<string></string>
<key>Timestamp</key>
<date>2012-10-17T08:01:51Z</date>
<key>Type</key>
<integer>5</integer>
</dict>
</array>
</dict>
</plist>