0

你好,这是我在一个字符串中的 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 解析器的最简单的解决方案是使用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 回答