0

こんにちはこれは1つの文字列の私のxmlです...

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<soap:Body><CelsiusToFahrenheitResponse 

xmlns="http://tempuri.org/"><CelsiusToFahrenheitResult>73.4</CelsiusToFahrenheitResult>

</CelsiusToFahrenheitResponse></soap:Body></soap:Envelope>

これから73.4が欲しい<CelsiusToFahrenheitResult>73.4</CelsiusToFahrenheitResult>...これを行うために文字列関数を使用する最も速い方法はありますか?... xml全体をトラバースしたくない!

4

1 に答える 1

1

xml-parser を使用しない最も簡単な解決策は、 を使用することNSRegularExpressionです。このようなもの:

NSString *pattern = @"<CelsiusToFahrenheitResult>(.*)</CelsiusToFahrenheitResult>";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern
                                                                       options:NSRegularExpressionCaseInsensitive
                                                                         error:nil];
__block NSString *fahrenheitString = nil;
[regex enumerateMatchesInString:yourString options:0 range:NSMakeRange(0, [yourString length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
    if (0 < [match numberOfRanges]) {
        NSRange range = [match rangeAtIndex:1];
        fahrenheitString = [yourString substringWithRange:range];
    }    
}];
于 2012-12-07T11:02:52.867 に答える