pod 'GDataXML-HTML'
解析kml
- 读取文件并解析成GDataXMLDocument
// 1.加载XML数据
GDataXMLDocument *XMLDocument = [[GDataXMLDocument alloc] initWithData:[NSData dataWithContentsOfFile:kmlPath] error:nil];
- 获取根元素并获取根元素的属性:
// 拿到XML文件中根元素下需要解析的子元素数组
NSArray *rootArr = [XMLDocument.rootElement elementsForName:@"Folder"];
- 获取根元素下面的子元素
// 获取根元素下面的子元素(子元素以数组方式存在的)
NSArray *documentArr = [rootArr[0] elementsForName:@"Document"];
for (GDataXMLElement *pointElement in documentArr) {
//获取name节点的值
NSString *name = [[[pointElement elementsForName:@"name"] objectAtIndex:0] stringValue];
JYLog(@"%@",name);
}
// 获取根元素下面的子元素(子元素以字符存在的)
GDataXMLNode *rootCountNode=[rootElement attributeForName:@"name"];//获取根元素的某个属性,这里是获取count属性
NSString *count=[rootArr[0] stringValue];//获取属性的值,NSString格式的
- 在根元素下面添加子元素(添加操作):
// 修改主节点属性
GDataXMLElement *rootBook = [document.rootElement elementsForName:@"Document"].firstObject;
[rootBook addAttribute:[GDataXMLNode attributeWithName:@"xmlns" stringValue:@"http://earth.google.com/kml/2.1"]];
// 修改颜色节点属性
NSArray *booksArr = [[document.rootElement elementsForName:@"Document"].firstObject elementsForName:@"Style"];
GDataXMLElement *book1 = booksArr[0];
[book1 addAttribute:[GDataXMLNode attributeWithName:@"id" stringValue:@"yellow"]];
GDataXMLElement *book2 = booksArr[1];
[book2 addAttribute:[GDataXMLNode attributeWithName:@"id" stringValue:@"pink"]];
GDataXMLElement *book3 = booksArr[2];
[book3 addAttribute:[GDataXMLNode attributeWithName:@"id" stringValue:@"red"]];
GDataXMLElement *book4 = booksArr[3];
[book4 addAttribute:[GDataXMLNode attributeWithName:@"id" stringValue:@"blue"]];
GDataXMLElement *book5 = booksArr[4];
[book5 addAttribute:[GDataXMLNode attributeWithName:@"id" stringValue:@"grn"]];
GDataXMLElement *book6 = booksArr[5];
[book6 addAttribute:[GDataXMLNode attributeWithName:@"id" stringValue:@"ltblu"]];
5。 保存修改后的xml元素(对xml文件进行增、删、改操作后保存修改后的xml文件,如果不保存则修改后文件内容不能反映到xml文件中)
// 存储xml文件
NSMutableData *mutableData = [NSMutableData data];
[mutableData appendData:[document XMLData]];
[mutableData writeToFile:xmlPath atomically:YES];