1

I am having issues with parsing the XML content and displaying it in the ui. XML has a content for an element that is like this

<fullDescription>3.2GHz PowerPC CPU  ATI GPU  512 MB 700 MHz GDDR3 RAM  1x Wireless Game Controller  3x USB 2.0 port  XBOX Live ready  20GB HDD  HD-AV-Kabel für High-Definition Output (720p, 1080i)  inkl.</fullDescription>

however after I parse it (thru TBXML) I am getting the string as

3.2GHz PowerPC CPU  ATI GPU  512 MB 700 MHz GDDR3 RAM  1x Wireless Game Controller  3x USB 2.0 port  XBOX Live ready  20GB HDD  HD-AV-Kabel für High-Definition Output (720p, 1080i)  inkl.

I have tried number of solutions already mentioned to clean up the special characters e.g HTML character decoding in Objective-C / Cocoa Touch and even modified the method to include "Â" , double space nothing seems to work..

I could not use the Github NSString category for HTML since that code does not seem to be ARC compatible and I am getting all sorts of errors when I try to use it in my project.

Can someone help me in the right direction.. pulling my hair out on this for a while :-(..i figure there has to be a simple way to do this in a generic way.

Community
  • 1
  • 1
gforg
  • 263
  • 1
  • 4
  • 19

2 Answers2

0

Just check that encoding of your xml file same as it indicated in your xml header.

0

Did you try this?

//  NSString_stripHtml.h
//  Copyright 2011 Leigh McCulloch. Released under the MIT license.

#import <Foundation/Foundation.h>

@interface NSString (stripHtml)
- (NSString*)stripHtml;
@end

//  NSString_stripHtml.m
//  Copyright 2011 Leigh McCulloch. Released under the MIT license.

#import "NSString_stripHtml.h"

@interface NSString_stripHtml_XMLParsee : NSObject<NSXMLParserDelegate> {
@private
    NSMutableArray* strings;
}
- (NSString*)getCharsFound;
@end

@implementation NSString_stripHtml_XMLParsee
- (id)init {
    if((self = [super init])) {
        strings = [[NSMutableArray alloc] init];
    }
    return self;
}

- (void)parser:(NSXMLParser*)parser foundCharacters:(NSString*)string {
    [strings addObject:string];
}
- (NSString*)getCharsFound {
    return [strings componentsJoinedByString:@""];
}
@end

@implementation NSString (stripHtml)
- (NSString*)stripHtml {
    // take this string obj and wrap it in a root element to ensure only a single root element exists
    NSString* string = [NSString stringWithFormat:@"<root>%@</root>", self];

    // add the string to the xml parser
    NSStringEncoding encoding = string.fastestEncoding;
    NSData* data = [string dataUsingEncoding:encoding];
    NSXMLParser* parser = [[NSXMLParser alloc] initWithData:data];

    // parse the content keeping track of any chars found outside tags (this will be the stripped content)
    NSString_stripHtml_XMLParsee* parsee = [[NSString_stripHtml_XMLParsee alloc] init];
    parser.delegate = parsee;
    [parser parse];

    // log any errors encountered while parsing
    //NSError * error = nil;
    //if((error = [parser parserError])) {
    //    NSLog(@"This is a warning only. There was an error parsing the string to strip HTML. This error may be because the string did not contain valid XML, however the result will likely have been decoded correctly anyway.: %@", error);
    //}

    // any chars found while parsing are the stripped content
    NSString* strippedString = [parsee getCharsFound];

    // get the raw text out of the parsee after parsing, and return it
    return strippedString;
}
@end
Roger
  • 389
  • 2
  • 6