iOS 分别使用GDataXML和KissXML生成xml

使用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="&#x4F60;&#x597D;"><user>HelloWorld&#x4F60;&#x597D;</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="&#x4F60;&#x597D;&#xFF0C;joy">HelloWorld你好</test></root>




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值