iPhone:用阿拉伯语内容解析Xml显示空值

时间:2011-08-25 21:36:17

标签: iphone ios nsxmlparser arabic

我正在尝试解析包含阿拉伯语单词的XML文件,如下所示:

 <NewsComponent>
  <HeadLine>العلاجية</HeadLine>
</NewsComponent>

当我在NSXMLParser委托上NSLog字符串时,它会打印出空字符串,即使我将数据解析为UITableView,它也会显示空文本。

我在将数据传递给解析器之前将数据编码为UTF-8。

如何在不丢失标签HeadLine的内容的情况下解析XMl?

注释:

1。与英语相同的XML工作正常。

2。在任何浏览器中显示XML都会正确显示数据。

3。在解析NSString之前将NSData转换为NSString和NSLog-ing也正确显示xml。

<小时/> 修改我是如何做到的?

NSString *sURLREST = @"http://www.example.com/getXml";

NSURL *url = [NSURL URLWithString:sURLREST];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

NSURLResponse *response;
NSError *error = nil;

NSData *data = [NSURLConnection sendSynchronousRequest: request returningResponse: &response error: &error];
NSString* output = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

NSData* dataOutput = [output dataUsingEncoding: NSUTF8StringEncoding];
NSXMLParser *parser = [[NSXMLParser alloc] dataOutput]; 


-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    if([sCurrentItem isEqualToString:@"HeadLine"])
    {
        [mutuableArray addObject:string];
       // I am just adding the string value to a NSMutuableArray to bind it with the UITableView.
        NSLog(@"%@",string);
    }
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    sCurrentItem = elementName;
}

1 个答案:

答案 0 :(得分:1)

您的错误在于parser:foundCharacters:。您不能指望每个元素只调用一次该方法。它可能被多次调用。在每个元素(在parser:didStartElement:)中第一次调用该方法之前,必须创建一个空的可变字符串,然后将新字符附加到该字符串。在调用parser:didEndElement:之前,字符串不完整。

请参阅Apple的示例代码。他们做得很好。