Skip to content

Instantly share code, notes, and snippets.

@Quotation
Last active November 10, 2017 10:07
Show Gist options
  • Save Quotation/6111289 to your computer and use it in GitHub Desktop.
Save Quotation/6111289 to your computer and use it in GitHub Desktop.
Make an XML-safe NSString. Replace invalid XML characters with space.
@implementation NSString (XMLSafe)
- (NSString *)xmlSafeString {
static NSMutableCharacterSet *invalidSet = nil;
if (!invalidSet) {
// XML Character Range definition (http://www.w3.org/TR/2008/REC-xml-20081126/#charsets)
// Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
invalidSet = [[NSMutableCharacterSet characterSetWithRange:NSMakeRange(0x9, 1)] retain];
[invalidSet addCharactersInRange:NSMakeRange(0xA, 1)];
[invalidSet addCharactersInRange:NSMakeRange(0xD, 1)];
[invalidSet addCharactersInRange:NSMakeRange(0x20, 0xD7FF - 0x20 + 1)];
[invalidSet addCharactersInRange:NSMakeRange(0xE000, 0xFFFD - 0xE000 + 1)];
[invalidSet invert];
}
return [[self componentsSeparatedByCharactersInSet:invalidSet] componentsJoinedByString:@" "];
}
@end
@richardlevy
Copy link

Thanks! This helped me out

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment