iphone - NSXMLParser 遇到特殊字符后停止解析

标签 iphone ios xml xcode xcode4

我正在从 google weather api 读取一个 XML 文件并使用 NSXMLParser 解析它。有问题的城市是巴黎。这是我得到的简短 xml 输出

           <?xml version="1.0"?>
    <xml_api_reply version="1">
    <weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0" ><forecast_information>
    <city data="Paris, Île-de-France"/>
    <postal_code data="Paris"/>
    <latitude_e6 data=""/>
    <longitude_e6 data=""/> 
...
...

现在我用来删除这个 xml 的代码是

NSString *address = @"http://www.google.com/ig/api?weather=Paris";
    NSURL *URL = [NSURL URLWithString:address];

NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:URL];
    [parser setDelegate:self];
    [parser parse];
...

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict 
{

    NSLog(@"XML Parser 1 ... elementName ... %@", elementName);

}

这是我为上述 xml 获得的输出

XML Parser 1 ... elementName ... xml_api_reply
XML Parser 1 ... elementName ... weather
XML Parser 1 ... elementName ... forecast_information

问题是它会解析所有标签,直到到达“城市数据”,因为名称 Paris, Èle-de-France 中有一个非 ascii 字符,然后它就停止了。它不会像 postal_code 那样事后处理标签。纬度、经度等

所以我的问题是,有没有一种方法可以从返回的 URL XML 字符串中删除所有非 ASCII 字符?

最佳答案

我知道会发生什么,我只是遇到了同样的问题......

在解析器中查看您的 foundCharacters 方法...

我有这样的东西:

if (!currentElementValue) {
   currentElementValue = [[NSMutableString alloc] initWithString:string];
}

currentElementValue 只是在特殊字符发生时停止获取。

现在我的工作代码是:

if (!currentElementValue) {
    currentElementValue = [[NSMutableString alloc] initWithString:string];
} else {
    [currentElementValue appendString:string];
}

记得在 didEndElement 方法的末尾将 currentElementValue 设置为 nil

关于iphone - NSXMLParser 遇到特殊字符后停止解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11832460/

相关文章:

ios - UIPickerView 选择行不起作用 ios7

iphone - audioPlayerDidFinishPlaying如何知道哪个文件完成了?

ios - 如何使用标签或标识符将多张图片添加到自定义表格 View 单元格

ios - TableViewcell 内的按钮缺少警告尾随约束的正确方法是什么

java - 将 SOAP 字符串消息转换为 SoapMessage 时出现 NullPointer 异常

iphone - 如何静音 AVCaptureDevice?

iphone - objective-c -iOS-奇怪的fmod()行为

ios - 如何使用 ios-image-filters 像在 Photoshop 中一样更改 UIImage 的颜色级别?

java - 控制 Web 服务中的命名空间前缀?

c# - 从 xml 文件中删除独立属性