2011-11-16 13 views
13

Quiero decodificar cadenas HTML y almacenarlas en NSString.Convierta cadenas de texto HTML formateadas a NSString parts

siguiente es la cadena html para una de las respuestas de google direction api.

teststring is Turn <b>right</b> onto <b>Kennington Park Rd/A3</b><div style="font-size:0.9em">Continue to follow A3</div><div style="font-size:0.9em">Entering toll zone in 1.7&nbsp;km at Newington Causeway/A3</div><div style="font-size:0.9em">Go through 2 roundabouts</div> 

Quiero almacenar esta cadena HTML en Array de 4 NSStrings diferentes con los siguientes 4 NSStrings (eliminación de toda la información de color de tamaño)

Turn right onto Kennington Park Rd/A3 
Continue to follow A3 
Entering toll zone in 1.7 km at Newington Causeway/A3 
Go through 2 roundabouts 

he utilizado método siguiente para convertir la serie html en llano texto. (html_response es la respuesta del servidor y stringByConvertingHTMLToPlainText es el método definido en el archivo de clase personalizado)

testString = (NSString*) [html_response stringByConvertingHTMLToPlainText]; 
NSLog(@"%@",testString); 

pero convierte toda STRI ng en lugar de dividirlo en partes. salida en la consola es

Turn right onto Kennington Park Rd/A3Continue to follow A3 Entering toll zone in 1.7 km at Newington Causeway/A3 Go through 2 roundabouts 

Así que necesito para escribir método personalizado para hacer esto? Cualquier ayuda será apreciada.

Respuesta

18

Hay una muy buena NSString category que puede usar, es una parte del proyecto MWFeedParser. Más específicamente, busca el archivo NSString+HTML.

La categoría NSString + HTML añade los siguientes métodos a la clase NSString,

- (NSString *)stringByStrippingTags; 
- (NSString *)stringWithNewLinesAsBRs; 
- (NSString *)stringByRemovingNewLinesAndWhitespace; 
- (NSString *)stringByDecodingHTMLEntities; 
- (NSString *)stringByEncodingHTMLEntities; 

A continuación, podría intentar algo como:

NSString *summary = [[[htmlString stringByStrippingTags] stringByRemovingNewLinesAndWhitespace] stringByDecodingHTMLEntities]; 

espero que ayude !, la buena suerte :)

+0

gracias por su respuesta. según el método sugerido, he html string se convierte a nsstring pero necesito almacenarlo como una matriz que contiene 4 nsstring diferentes. ¿Tienes alguna idea de cómo puedo hacerlo? ¿Debo anular los métodos anteriores? – chatur

+0

¿Una cadena por div? – Goles

Cuestiones relacionadas