2

I am reading a xml and finaly just need to remove the CDATA Infos in my results

For example: I get:

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

just need "iPhone 4-Rückgaberecht: Deutsche Telekom kulant"

thx chris

Edit to your answers: I am not using NSXMLParser (thats the reason I make my own parser)

Found some suggestions with:

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

System.DateTime.Now.Month
System.DateTime.Now.Year
System.DateTime.Now.Day

And so on.........You have lots of things you can get from DateTime.Now

4

4 に答える 4

2

Ok, i solved it with that:

 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;
}

call: myConvertedString = [self convertEntiesInString:myOriginalString];

于 2010-07-29T09:56:44.090 に答える
1

使用する

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

代わりの方法

  • (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)文字列

それでおしまい

于 2010-07-29T09:26:04.767 に答える
1

あなたは正規表現を試すことができます

<!\[CDATA\[(.*)\]\]>と置き換えます$1

于 2010-07-29T09:29:14.523 に答える
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 に答える