我在接受采访时被问到这个问题,想知道是否有人知道解决这个问题的最佳方法。
我有一个XML字符串,我无法访问整个XML文档,所使用的解析器是一个流解析器(NSXMLParser):
<i><b></b><strong>Test</strong></i>
这必须由
取代<i><b/><strong>Test</strong></i>
如何使用NSXMLParser在Objective-C中完成?
答案 0 :(得分:0)
实际上没有“一种”最好的方法,但Apple概述了使用NSXMLParser
修改XML文档的一些general guidelines。它没有具体说明并给你一个确切的实现,但它应该在你的某个地方开始。
答案 1 :(得分:0)
我已经解决了,忘了在这里发布答案:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict{
content = nil;
content = [[NSMutableString alloc] init];
isEndElement = FALSE;
if([previousElement length] != 0){
[previousAttribute count] != 0 ? NSLog(@"<%@ %@>", previousElement, [previousAttribute description]) : NSLog(@"<%@>", previousElement);
}
previousElement = elementName;
previousAttribute = attributeDict;
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
[content appendString:string];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
previousElement = @"";
if(isEndElement){
NSLog(@"</%@>", elementName);
}else{
if([content length] != 0){
[previousAttribute count] != 0 ? NSLog(@"<%@ %@>%@</%@>", elementName, [previousAttribute description], content, elementName) :
NSLog(@"<%@>%@</%@>", elementName, content, elementName);
}else{
[previousAttribute count] != 0 ? NSLog(@"<%@ %@/>", elementName, [previousAttribute description]) : NSLog(@"<%@/>", elementName);
}
}
isEndElement = TRUE;
}