1

スペイン語でxmlファイルを解析する必要があります(生成方法を制御できませんでした)。解析部分は問題なく動作しますが、問題は、xml ファイルに次のような特殊文字が含まれている場合です。

エスペクタキュロス

パースはいつですか?

CocoaXMLParser を使用しています。これをどのように処理できるか知っている人はいますか?

これは私のコードです:

-(void)getRss
{
    NSString *urlString=@"http://mysite.com/content.xml";
    NSURL *url=[NSURL URLWithString:urlString];
    NSURLRequest *rssRequest=[NSURLRequest requestWithURL:url];
    self.contentConnection=[[NSURLConnection alloc]initWithRequest:rssRequest delegate:self startImmediately:YES];


}




- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {


    self.dataResponse = [NSMutableData data];

    NSLog(@"didReceiveResponse");

}


- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [_dataResponse appendData:data];

     NSLog(@"didReceiveData");




}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {

    NSLog(@"didFailWithError");

}



- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

     NSLog(@"connectionDidFinishLoading ");

     [self parseContent];
}


-(void)parseContent
{
    NSString *response = [[NSString alloc] initWithData:_dataResponse encoding:NSUTF8StringEncoding];
    NSLog(@"data received %@", response);
    NSLog(@"parse content ");

    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:_dataResponse];
    parser.delegate = self;
    [parser parse];


}


- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    self.currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if ([elementname isEqualToString:@"categoriaNoticias"])
    {
            self.validXML=YES;
        NSLog(@"es xml valido");

    }
    else
    {
         self.validXML=YES;
    }
}

- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if (_validXML) {
        if ([elementname isEqualToString:@"titulo"])
        {
            NSString *string=_currentNodeContent;
            NSLog(@"titulo %@", string);
        }
        if ([elementname isEqualToString:@"link"])
        {
        NSLog(@"titulo %@", _currentNodeContent);
    }

}

}

私は本当にどんな指針にも感謝します

4

1 に答える 1

0

XML ファイルが Latin-1 (ISO-8859-1) でエンコードされていると仮定すると、その場で XML ファイルを修正します。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    const char* xmlDecl = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\r\n";
    self.dataResponse = [NSMutableData data];
    [self.dataResponse appendBytes: xmlDecl length: strlen(xmlDecl)];
}

有効なエンコーディングを確認し、必要に応じて適宜変更してください。

于 2012-12-12T18:52:35.487 に答える