目标C HTML转义/取消转义 [英] Objective C HTML escape/unescape

查看:145
本文介绍了目标C HTML转义/取消转义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

想知道是否有一个简单的方法来做一个简单的HTML转义/ unescape在Objective C.我想要的是这样的伪装代码:

  NSString * string = @& lt; span& gt; Foo& lt; / span& gt;; 
[string stringByUnescapingHTML];

哪些返回

 < span> Foo< / span>希望取消转义所有其他HTML实体,甚至是Ӓ等ASCII码。

>

在Cocoa Touch / UIKit中有没有方法来执行此操作?

解决方案

链接包含以下解决方案。 Cocoa CF有CFXMLCreateStringByUnescapingEntities函数,但在iPhone上不可用。

  @interface MREntitiesConverter:NSObject< NSXMLParserDelegate> {
NSMutableString * resultString;
}

@property(nonatomic,retain)NSMutableString * resultString;

- (NSString *)convertEntitiesInString:(NSString *)s;

@end


@implementation MREntitiesConverter

@synthesize resultString;

- (id)init
{
if([super init]){
resultString = [[NSMutableString alloc] init];
}
return self;
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)s {
[self.resultString appendString:s];
}

- (NSString *)convertEntitiesInString:(NSString *)s {
if(!s){
NSLog(@ERROR:parameter string is nil );
}
NSString * xmlStr = [NSString stringWithFormat:@< d>%@< / d>,s]
NSData * data = [xmlStr dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSXMLParser * xmlParse = [[[NSXMLParser alloc] initWithData:data] autorelease];
[xmlParse setDelegate:self];
[xmlParse parse];
return [NSString stringWithFormat:@%@,resultString];
}

- (void)dealloc {
[resultString release];
[super dealloc]
}

@end


Wondering if there is an easy way to do a simple HTML escape/unescape in Objective C. What I want is something like this psuedo code:

NSString *string = @"&lt;span&gt;Foo&lt;/span&gt;";
[string stringByUnescapingHTML];

Which returns

<span>Foo</span>

Hopefully unescaping all other HTML entities as well and even ASCII codes like Ӓ and the like.

Is there any methods in Cocoa Touch/UIKit to do this?

解决方案

This link contains the solution below. Cocoa CF has the CFXMLCreateStringByUnescapingEntities function but that's not available on the iPhone.

@interface MREntitiesConverter : NSObject <NSXMLParserDelegate>{
    NSMutableString* resultString;
}

@property (nonatomic, retain) NSMutableString* resultString;

- (NSString*)convertEntitiesInString:(NSString*)s;

@end


@implementation MREntitiesConverter

@synthesize resultString;

- (id)init
{
    if([super init]) {
        resultString = [[NSMutableString alloc] init];
    }
    return self;
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)s {
        [self.resultString appendString:s];
}

- (NSString*)convertEntitiesInString:(NSString*)s {
    if (!s) {
        NSLog(@"ERROR : Parameter string is nil");
    }
    NSString* xmlStr = [NSString stringWithFormat:@"<d>%@</d>", s];
    NSData *data = [xmlStr dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
    NSXMLParser* xmlParse = [[[NSXMLParser alloc] initWithData:data] autorelease];
    [xmlParse setDelegate:self];
    [xmlParse parse];
    return [NSString stringWithFormat:@"%@",resultString];
}

- (void)dealloc {
    [resultString release];
    [super dealloc];
}

@end

这篇关于目标C HTML转义/取消转义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆