Re: Reading in XML with iso-8859-1 encoding?
Re: Reading in XML with iso-8859-1 encoding?
- Subject: Re: Reading in XML with iso-8859-1 encoding?
- From: Ricky Sharp <email@hidden>
- Date: Sat, 6 Dec 2008 06:58:25 -0600
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@hidden
Instant Interactive(tm) http://www.instantinteractive.com
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden