ios objective-c xml-parsing

ios - ¿Cómo publicar una cadena con caracteres especiales y lenguaje tailandés usando el análisis XML en Objective C?



objective-c xml-parsing (2)

Soy nuevo en iOS y tengo problemas para publicar cadenas que contengan caracteres especiales.

Mi código es así en DidFinishLoading:

NSXMLParser *myNSXMLParserPostObj=[[NSXMLParser alloc]initWithData:myNSMDataPostFromServer]; myNSXMLParserPostObj.delegate=self; [myNSXMLParserPostObj parse]; NSLog(@"%@",myNSXMLParserPostObj.parserError); NSString *responseStringWithEncoded = [[NSString alloc] initWithData: myNSMDataPostFromServer encoding:NSUTF8StringEncoding]; //NSLog(@"Response from Server : %@", responseStringWithEncoded); NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[responseStringWithEncoded dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil]; serverResponse.attributedText = attrStr; NSString *Str =serverResponse.text; NSLog(@"Server Response =%@",Str); UIAlertView *alert3 = [[UIAlertView alloc] initWithTitle:@"Success" message:@"Complaint Added Successfully" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];

Para obtener datos del servicio web estoy usando un código como este:

loginStatusZone = [[NSString alloc] initWithBytes: [myNSMDatazoneFromServer mutableBytes] length:[myNSMDatazoneFromServer length] encoding:NSUTF8StringEncoding]; NSLog(@"loginStatus =%@",loginStatusZone); NSError *parseError = nil; NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:loginStatusZone error:&parseError]; NSLog(@"JSON DICTIONARY = %@",xmlDictionary); recordResultZone = [xmlDictionary[@"success"] integerValue]; NSLog(@"Success: %ld",(long)recordResultZone); NSDictionary* Address=[xmlDictionary objectForKey:@"soap:Envelope"]; NSLog(@"Address Dict = %@",Address); NSDictionary *new =[Address objectForKey:@"soap:Body"]; NSLog(@"NEW DICT =%@",new); NSDictionary *LoginResponse=[new objectForKey:@"FillZonesNewResponse"]; NSLog(@"Login Response DICT =%@",LoginResponse); NSDictionary *LoginResult=[LoginResponse objectForKey:@"FillZonesNewResult"]; NSLog(@"Login Result =%@",LoginResult); if(LoginResult.count>0) { NSLog(@"Login Result = %@",LoginResult); NSLog(@"Login Result Dict =%@",LoginResult); NSString *teststr =[[NSString alloc] init]; teststr =[LoginResult objectForKey:@"text"]; NSLog(@"Test String Value =%@",teststr); NSString *string = [LoginResult valueForKey:@"text"]; NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; zoneresponsedict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; idzonearray=[[NSMutableArray alloc]init]; idzonearray=[zoneresponsedict valueForKey:@"ZoneId"]; NSLog(@"Result Array =%@",idzonearray); shortnamezonearray=[[NSMutableArray alloc]init]; shortnamezonearray=[zoneresponsedict valueForKey:@"ZoneName"]; NSLog(@"Result Array =%@",shortnamezonearray); }

Si agrego un carácter especial, me muestra un error como

Domain=NSXMLParserErrorDomain Code=111 "The operation couldn’t be completed. (NSXMLParserErrorDomain error 111.)"

¿Cómo puedo publicar datos con caracteres especiales?

Estoy agregando algo como esto en idioma tailandés

Pero estoy obteniendo esto:

Lo mismo con el hindi

La salida se está volviendo así

Pero cuando alguien agrega el idioma tailandés usando Android o el sitio web, recibo el texto correcto en tailandés. El único problema es con este código postal.


Deberá escribir & <> de la siguiente manera, como en un archivo html:

&amp; &lt; &gt;


Puede reemplazar su cadena para que le permita enviar caracteres especiales. Puede usar el método de cadena stringByReplacingOccurrencesOfString

NSString *RaisedBy="Your Special character string"; RaisedBy = [RaisedBy stringByReplacingOccurrencesOfString:@"&" withString:@"&amp;"]; RaisedBy = [RaisedBy stringByReplacingOccurrencesOfString:@"<" withString:@"&lt;"]; RaisedBy = [RaisedBy stringByReplacingOccurrencesOfString:@">" withString:@"&gt;"]; RaisedBy = [RaisedBy stringByReplacingOccurrencesOfString:@"''" withString:@"&apos;"]; RaisedBy = [RaisedBy stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];

Este código también admitirá el idioma tailandés.