GDataXML和KissXML都可以對(duì)xml文件進(jìn)行修改,本文是對(duì)GDataXML-HTML的使用方法進(jìn)行說(shuō)明,GDataXML-HTML基于谷歌的GDataXML并且支持HTML的解析,詳情請(qǐng)見(jiàn)Github,可以直接使用CocoaPods將其導(dǎo)入到工程當(dāng)中:pod 'GDataXML-HTML', '~> 1.3.0'
刪除節(jié)點(diǎn)
//本地xml文件路徑
NSString *path = [[NSBundle mainBundle] pathForResource:@"map2" ofType:@"svg"];
//xml字符串
NSString *xmlStr = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//讀取xml到內(nèi)存
GDataXMLElement *element = [[GDataXMLElement alloc] initWithXMLString:xmlStr error:nil];
//搜索xml中的g標(biāo)簽,GDataXML-HTML也支持XPath
NSArray *result = [element elementsForName:@"g"];
//尋找需要被刪除的節(jié)點(diǎn),此處是所有g(shù)標(biāo)簽中的最后一個(gè)
GDataXMLNode *node = (GDataXMLNode *)[result lastObject];
//刪除操作
[element removeChild:node];
增加節(jié)點(diǎn)
//創(chuàng)建<Path/>元素
GDataXMLElement* pathEle = [GDataXMLNode elementWithName:@"path"];
//創(chuàng)建id屬性
GDataXMLNode* attr = [GDataXMLNode attributeWithName:@"id" stringValue:@"myid"];
//為<path/>元素添加id屬性
[pathEle addAttribute:attr];
//添加<path/>屬性
GDataXMLNode* attr1 = [GDataXMLNode attributeWithName:@"d" stringValue:@"M20 20 C90 40 130 40 180 20 S250 60 280 20"];
GDataXMLNode* attr2 = [GDataXMLNode attributeWithName:@"stroke" stringValue:@"#C63300"];
GDataXMLNode* attr3 = [GDataXMLNode attributeWithName:@"fill" stringValue:@"none"];
GDataXMLNode* attr4 = [GDataXMLNode attributeWithName:@"style" stringValue:@"stroke-width: 5px;"];
//將以上4個(gè)屬性添加到pathEle元素中
[pathEle addAttribute:attr1];
[pathEle addAttribute:attr2];
[pathEle addAttribute:attr3];
[pathEle addAttribute:attr4];
//將<path/>元素添加為XML文檔根元素的子元素
[element addChild:pathEle];
重新生成XML文件
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithRootElement:element];
NSData *xmlData = [doc XMLData];
NSString *xmlStrrss = [[NSString alloc] initWithData:xmlData encoding:NSUTF8StringEncoding];
NSLog(@"%@",xmlStrrss);