iOS 用GDataXMLNode创建和解析XML

NSError *error;

//    NSString *path = [[NSBundle mainBundle] pathForResource:@"testxml" ofType:@"xml"];

//    NSString *content = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

    NSLog(content);

//    GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithXMLString:content options:1 error:&error];

    

    //创建XML

    GDataXMLElement *rootElement = [GDataXMLNode elementWithName:@"request"];

    GDataXMLElement *element = [self getElementWithName:@"peter" withAge:@"24" withSex:@"male" withAttribute:@"0"];

    [rootElement addChild:element];

    element = [self getElementWithName:@"Green" withAge:@"26" withSex:@"female" withAttribute:@"1"];

    [rootElement addChild:element];

    element = [self getElementWithName:@"Susan" withAge:@"28" withSex:@"female" withAttribute:@"1"];

    [rootElement addChild:element];

    GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithRootElement:rootElement];

    NSData *data =  [document XMLData];

    NSString *content = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    NSLog(content);

    

    


    if(error){

        NSLog([error localizedDescription]);

    }else{

        //解析XML

        GDataXMLElement *root = [document rootElement];

        for (int i=0; i <[rootElement childCount]; i++) {

            GDataXMLElement *element = [root childAtIndex:i];

            NSLog(@"Element Name = %@", element.name);

            NSLog(@"Type = %@", [[element attributeForName:@"type"] stringValue]);

            for (int j=0; j<[element childCount]; j++) {

                GDataXMLElement *subItem = [element childAtIndex:j];

                NSLog(@"Sub Name = %@", subItem.name);

                NSLog(@"Sub value = %@", subItem.stringValue);

            }

        }

    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在实际的项目中,IPhone应用程序会存在很多与服务器之间的数据交互的地方,XML是首选方案。 此包可以解决XML文件的解析、对象转化为XML字符串的问题。 1 通过调用解析类,可以将XMLDATA数据转换为XmlNode对象,XmlNode以树形结构进行XML的数据封装,使用的时候按照树形结构进行数据的获取。(如有问题请留言) XmlNode结构如下: @interface XmlNode : NSObject { } @property(nonatomic,retain)NSMutableDictionary *attributes;//属性 @property(nonatomic,retain)NSMutableArray *childs;//下级子节点 @property(nonatomic,retain)NSString *name;//节点名称 @property(nonatomic,retain)NSString *value;//节点值 @property BOOL haveChilds;//是否有子节点 @property BOOL haveAttribute;//是否有属性 @property(nonatomic,retain)NSMutableString *xmlString; -(void)addAttribute:(NSDictionary *)att; -(void)addChild:(XmlNode *)node; -(NSString *)getXmlString;//将此对象装换为XML字符串 -(NSString *)getNodeValue:(NSString *)nodeName;//在此节点中根据子节点名称获得子节点值 -(NSString *)getAttributeValue:(NSString *)attName;//获得此节点的属性值 @end 2 而解析器只需要调用相应的方法,传入相应的参数即可。 -(XmlNode *)getObject:(NSString *)elName xmlData:(NSData *)xmlData;//从data中获取对象,并返回封装对象XmlNode 。 -(NSMutableArray *)getList:(NSString *)elName xmlData:(NSData *)xmlData;//从DATA中获得对象集合,集合中也是XmlNode --ps-- 花了点时间重构了之前的xml与对象的转换代码,采用了新的逻辑算法。代码更加精简,并可支持包含节点的属性转换了。 之前有人说看不懂是做什么,所以写了个小UI来进行体现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值