diff --git a/XMLDictionary/XMLDictionary.h b/XMLDictionary/XMLDictionary.h index 3f51968..344c184 100644 --- a/XMLDictionary/XMLDictionary.h +++ b/XMLDictionary/XMLDictionary.h @@ -106,6 +106,8 @@ static NSString *const XMLDictionaryAttributePrefix = @"_"; - (NSString *)XMLEncodedString; +- (NSString *)filterXMLSpecial; + @end diff --git a/XMLDictionary/XMLDictionary.m b/XMLDictionary/XMLDictionary.m index a7f7ab0..e4a5f39 100644 --- a/XMLDictionary/XMLDictionary.m +++ b/XMLDictionary/XMLDictionary.m @@ -557,4 +557,37 @@ - (NSString *)XMLEncodedString stringByReplacingOccurrencesOfString:@"\'" withString:@"'"]; } +- (NSString *)filterXMLSpecial +{ + NSData *myD = [self dataUsingEncoding:NSUTF8StringEncoding]; + Byte *bytes = (Byte *)[myD bytes]; + NSString *hexStr = @""; + for(NSUInteger i = 0; i < [myD length]; i++) + { + @autoreleasepool + { + // xml无效字符 + unsigned int anHex = bytes[i]&0xff; + if((anHex > 0x00 && anHex <= 0x08) || + (anHex >= 0x0b && anHex <= 0x0c) || + (anHex >= 0x0e && anHex <= 0x1f)) + { + continue; + } + + NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];///16进制数 + + if([newHexStr length]==1) + { + hexStr = [NSString stringWithFormat:@"%@0%@",hexStr, newHexStr]; + } + else + { + hexStr = [NSString stringWithFormat:@"%@%@",hexStr, newHexStr]; + } + } + } + return hexStr; +} + @end