Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios iPhone如何使用NSXMLParser获取CDATA属性?_Ios_Objective C_Iphone_Cocoa_Cocoa Touch - Fatal编程技术网

Ios iPhone如何使用NSXMLParser获取CDATA属性?

Ios iPhone如何使用NSXMLParser获取CDATA属性?,ios,objective-c,iphone,cocoa,cocoa-touch,Ios,Objective C,Iphone,Cocoa,Cocoa Touch,我想从在线XML解析,其中XML如下所示: <menu maincategory="![CDATA[Erhverv]]" subcategory="![CDATA[Erhvervsregister]]" category="![CDATA[Akupunktur]]"/> - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)names

我想从在线XML解析,其中XML如下所示:

<menu maincategory="![CDATA[Erhverv]]" subcategory="![CDATA[Erhvervsregister]]" category="![CDATA[Akupunktur]]"/>
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
    if ([elementName isEqualToString:@"menu"]) {
        NSString *maincategory = [attributeDict objectForKey:@"maincategory"];
    }
}
使用%@的输出如下所示:

attributeDict:{
    category = "![CDATA[Advokater]]";
    maincategory = "![CDATA[Erhverv]]";
    subcategory = "![CDATA[Erhvervsregister]]";
}


2011-05-27 19:20:42.663 XML[62494:840b] maincategory using %s: `ãâå
2011-05-27 19:20:42.663 XML[62494:840b] maincategory using %@: ![CDATA[Erhverv]]
但我需要的是不带输出的![CDATA]标签

有谁能帮我解决这个问题吗?
提前感谢

我将使用NSRegularExpression对象对attributeDict进行后期处理。对于字典中的每个字符串,将其复制到一个名为下面我的代码中的字符串的NSMutableString中,然后运行以下代码:

NSError *theError = nil;
NSRegularExpression *theExpression = [NSRegularExpression regularExpressionWithPattern:@"!\\[CDATA\\[(.*)\\]\\]" options:(NSRegularExpressionOptions)nil error:&theError];
NSUInteger count = [theExpression replaceMatchesInString:theString options:(NSRegularExpressionOptions)nil range:NSMakeRange(0, [theString length]) withTemplate:@"$1"];

非常感谢您的建议,但这是节点值,我需要节点![CDATA]字符串中的属性,尽管不是直接的解决方案;这将是非常容易采取简单![CDATA[和]]关闭这些字符串。无需大声喊叫。您是否尝试过NSString*maincategory=[[attributeDict objectForKey:@maincategory]stringByReplacingOccurrencesOfString:@![CDATA[withString:@];您还需要替换尾随的“]”。您好,Rayfleck,这是可行的,但问题是它在日志中使用%@正确打印,而不是使用%s。使用%s显示“õ”