1

MountainLionのメッセージのチャットログを解析するためにNSXMLParserに取り組んでいます。ファイルの拡張子は.ichat...です。

これが私のコードです

- (void) doParse:(NSData *)data {

NSString *dString;
UtilClass *Debug = [[UtilClass alloc] init];

/*
NSString *dictionaryString = [data description];
dString = dictionaryString;
[Debug debugLog:dString];
*/

dString = @"xmlparser: 10 \n";
[Debug debugLog:dString];

// create and init NSXMLParser object
NSXMLParser *nsXmlParser = [[NSXMLParser alloc] initWithData:data];

// create and init our delegate
XMLParser *parser = [[XMLParser alloc] initXMLParser];

// set delegate
[nsXmlParser setDelegate:parser];

// parsing...
BOOL success = [nsXmlParser parse];

// test the result
if (success) {

    dString = @"xmlparser: YES \n";
    [Debug debugLog:dString];
    // get array of users here
    //  NSMutableArray *users = [parser users];
} else {
    NSError *error2 = [nsXmlParser parserError];
    dString = @"xmlparser: ERROR :: ";
    dString = [dString stringByAppendingFormat:@"%@\n",error2];

    [Debug debugLog:dString];

    dString = @"xmlparser: NO \n";
    [Debug debugLog:dString];
}

[parser release];
[nsXmlParser release];

}

NSDataが作成され、上記のメソッドに送信される方法は次のとおりです。

NSString *logPath = @"~/Library/Messages/Archive/2012-09-06/anything on 2012-09-06 at 10.45.ichat";

    NSData *testData = [[[NSData alloc] initWithContentsOfFile:[logPath stringByExpandingTildeInPath]]autorelease];

            [self doParse:testData];

結局、私は常に「NSXMLParserErrorDomain 4」を受け取りました。これは、パーサーに空のドキュメントが与えられることを意味します。ただし、パーサーに渡される直前に「data」変数をログに記録しましたが、データは正常に見えます。ここで何が問題になる可能性がありますか?

XMLドキュメントの最初の数行

   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>$archiver</key>
    <string>NSKeyedArchiver</string>
    <key>$objects</key>
    <array>
        <string>$null</string>
        <dict>
4

0 に答える 0