使用GDataXML生成xml
GDataXML只有两个文件GDataXMLNode.h和GDataXMLNode.m。使用方法如下:
将文件包含进工程后,添加libxml2.dylib:
之后添加路径${SDK_ROOT}/usr/include/libxml2:
现在可以编写代码了:
#import "GDataXMLNode.h"
// 创建一个根标签
GDataXMLElement *rootElement = [GDataXMLNode elementWithName:@"root"];
// 创建一个属性
GDataXMLElement *attribute = [GDataXMLNode attributeWithName:@"a" stringValue:@"b"];
// 创建一个标签元素
GDataXMLElement *element = [GDataXMLNode elementWithName:@"user" stringValue:@"HelloWorld"];
// 把标签与属性添加到根标签中
[rootElement addAttribute:attribute];
[rootElement addChild:element];
// 生成xml文件内容
GDataXMLDocument *xmlDoc = [[GDataXMLDocument alloc] initWithRootElement:rootElement];
NSData *data1 = [xmlDoc XMLData];
NSString *xmlString = [[NSString alloc] initWithData:data1 encoding:NSWindowsCP1253StringEncoding];
NSLog(@"xmlString %@", xmlString);
生成的内容即:
<?xml version="1.0"?>
<root a="b"><user>HelloWorld</user></root>
这里有一个问题, 如果stringValue为汉字,生成的xml中汉字为乱码,例如:GDataXMLElement *attribute = [GDataXMLNode attributeWithName:@"a" stringValue:@"你好"];
GDataXMLElement *element = [GDataXMLNode elementWithName:@"user" stringValue:@"HelloWorld你好"];
生成的内容就成了:
<?xml version="1.0"?>
<root a="你好"><user>HelloWorld你好</user></root>
暂时还不知道怎么解决。
使用KissXML生成xml
github上有KissXML的下载,用KissXML生成的xml标签元素的值汉字正常,使用方法如下:
将KissXML包含进工程:
之后还是要添加libxml2.dylib和路径${SDK_ROOT}/usr/include/libxml2,方法同GdataXML的配置方法。
代码如下:
#import "DDXMLElementAdditions.h"
DDXMLElement *rootElement = [[DDXMLElement alloc] initWithName: @"root"];
DDXMLElement *element = [[DDXMLElement alloc] initWithName: @"test"];
[element setStringValue: @"HelloWorld你好"];
[rootElement addChild: element];
NSString *xmlString = [@"<?xml version=\"1.0\"?>" stringByAppendingString:[rootElement XMLString]];
NSLog(@"xmlString %@",xmlString);
生成的内容如下:
<?xml version="1.0"?><root><test>HelloWorld你好</test></root>
给element添加属性:
[element addAttributeWithName:@"test"stringValue:@"你好,joy"];
生成的结果为:
<?xml version="1.0"?><root><test test="你好,joy">HelloWorld你好</test></root>