0

ここに、Webサービス経由で受信したxmlがあります..

<?xml version="1.0" encoding="utf-8"?>
<Quotes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://swanandmokashi.com">
  <QuoteOfTheDay>Hit any user to continue.</QuoteOfTheDay>
  <Author>Fuzzel Fish Administration Page</Author>
</Quotes>

そして、私のconnectionDidFinishLoadingでこれを解析しようとしています: ...

{            
 webData_str=[[NSString alloc]initWithData:webData encoding:NSUTF8StringEncoding];
 NSString *pattern = @"<QuoteOfTheDay>(.*)</QuoteOfTheDay><Author>(.*)</Author>";
 NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern
                        options:NSRegularExpressionCaseInsensitive                                                                            error:nil];

__block NSString *QuoteString,*author= nil;

[regex enumerateMatchesInString:webData_str options:0 range:NSMakeRange(0, [webData_str length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop) {

   // not executing...

    if (0 < [match numberOfRanges]) {
        NSRange range = [match rangeAtIndex:1];
        QuoteString = [webData_str substringWithRange:range];


        NSRange range1 = [match rangeAtIndex:2];
        author = [webData_str substringWithRange:range1];        

    }
}];        

final=[NSString stringWithFormat:@"\n%@\n%@",QuoteString,author];
NSLog(@"Final--- %@",final);
}

これで何が問題なのですか?、実行フローがブロック内に入らない..

4

1 に答える 1

2

NSXMLParserより良い解決策は、正規表現の代わりにXML パーサー (例: ) を使用することです。

しかし、あなたの具体的な問題に答えるために: あなたの正規表現は、 と の間の空白 (改行とスペース) と一致しませ</QuoteOfTheDay><Author>。パターンを変更すると

NSString *pattern = @"<QuoteOfTheDay>(.*)</QuoteOfTheDay>\\s*<Author>(.*)</Author>";

期待される出力が得られます。

于 2013-05-06T07:16:35.957 に答える