Ios iPhone如何使用NSXMLParser获取CDATA属性?
我想从在线XML解析,其中XML如下所示: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
<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显示“õ”