On Dec 6, 2008, at 4:35 AM, Amy Gibbs wrote:

I've got a web based xml file in iso-8859-1 encoding that I'm trying to read into an NSXMLDocument.

I've got the following code, but I can't seem to make it work? (I've tried all manner of combinations)


        //create the url
        NSString *urlString = [NSString stringWithFormat:
@"http://www.willowtreecrafts.co.uk/ag/ sesbuddyimport.php"];
        NSURL *url = [NSURL URLWithString:urlString];
        NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url
                                                                                
                cachePolicy:NSURLRequestReloadIgnoringCacheData
                                                                                
        timeoutInterval:30];
                //fetch the xml response
        NSData *urlData;
        NSURLResponse *response;
        NSError *error;
        urlData = [NSURLConnection sendSynchronousRequest:urlRequest
                                                                        
returningResponse:&response
                                                                                    
            error:&error];
        
        
        if (!urlData){
                NSAlert *alert=[NSAlert alertWithError:error];
                [alert runModal];
                return;
                
        }
        //parse the xml response
        [doc release];
        [doc setCharacterEncoding:@"iso-8859-1"];


I'm guessing that doc is initially nil, so the above two lines are doing nothing (messages sent to nil).


//NSString *xmlstring = [NSString stringWithContentsOfURL:url usedEncoding:@"iso-8859-1" error:&error]; doc=[[NSXMLDocument alloc]initWithData:urlData options:0 error:&error ];
        
//doc=[[NSXMLDocument alloc]initWithContentsOfURL:url options:0 error:&error]; //doc=[[NSXMLDocument alloc]initWithXMLString:xmlstring options:0 error:&error];


I get an error telling me that the input is not in UTF-8 encoding. I know the input isn't UTF-8, but how can I get it to accept the iso-8859-1 file?



You can probably simplify this a bit by using stringWithContentsOfURL:encoding:error. Note 'encoding' and not 'usedEncoding'. The former allows you to specify the encoding. In this case, use the constant NSISOLatin1StringEncoding (which is ISO_8859-1).

Side note. Some parsers are especially picky about encoding names, so best to always use the constants. The official string for this particular encoding is "ISO_8859-1". Some parsers allow aliases or modifications as well (hyphens, lowercase, etc.)

Then, feed the string (which is now properly decoded) into a new XML doc for parsing:

NSXMLDocument* theXMLDoc = [[NSXMLDocument alloc] initWithXMLString:theString options:myOptions error:&myError];

//do work

[theXMLDoc release];

___________________________________________________________
Ricky A. Sharp         mailto:[EMAIL PROTECTED]
Instant Interactive(tm)   http://www.instantinteractive.com



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to