2

我正在阅读一个 xml,最后只需要删除我的结果中的 CDATA 信息

例如:我得到:

 "<![CDATA[iPhone 4-Rückgaberecht: Deutsche Telekom kulant]]>"

只需要“iPhone 4-Rückgaberecht:Deutsche Telekom kulant”

谢谢克里斯

编辑您的答案: 我没有使用 NSXMLParser(这就是我制作自己的解析器的原因)

找到了一些建议:

- (NSString *)stringByDecodingXMLEntities;
but dont know how to implement. I always get
> YourController may not respond to '-stringByDecodingXMLEntities" <

采用

  • (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock

方法而不是

  • (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

就是这样

4

4 回答 4

2

好的,我解决了这个问题:

 NSMutableString* resultString;


- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)s {
   resultString = [[NSMutableString alloc] init];
    [resultString appendString:s];
}

- (NSString*)convertEntiesInString:(NSString*)s {
    if(s == nil) {
    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];
    [xmlParse setDelegate:self];
    [xmlParse parse];
    NSString* returnStr = [[NSString alloc] initWithFormat:@"%@",resultString];
  return returnStr;
}

调用:myConvertedString = [self convertEntiesInString:myOriginalString];

于 2010-07-29T09:56:44.090 回答
1

你可以试试正则表达式

替换<!\[CDATA\[(.*)\]\]>$1

于 2010-07-29T09:29:14.523 回答
1

利用

  • (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock

方法而不是

  • (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

而已

于 2010-07-29T09:26:04.767 回答
0

如果您已经有字符串格式的字符串,您可以像这样删除它:

//Declare what you wish to remove
NSString * suffixTorRemove = @"<![CDATA[";
NSString * prefixToRemove = @"]]>";

//Now create a new string which uses your existing string and removes the declared occurrences above
NSString * newString = [yourString stringByReplacingOccurrencesOfString:suffixTorRemove withString:@""];
//Now the first part has changed, time to remove the second part
NSString * newString2 = [newString stringByReplacingOccurrencesOfString:prefixTorRemove withString:@""];

快速简单:-)

于 2015-04-09T07:38:47.170 回答