注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

IOS & JAVA KEY

(iMilo)

 
 
 

日志

 
 
关于我

All the splendor in the world is not worth a good friend!! Hello my friend!!

网易考拉推荐

TOUCHXML解析XML小结  

2011-07-04 22:22:15|  分类: IOS |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

 

引入:

iPad/iPhone与服务端进行数据交互,一般都是通过webservice实现的,而从服务端返回的数据一般是xml,在这里就使用touchXML来解析xml,为了简单,这里就直接解析xml文件.

准备:(xCode项目中加入对touchXML的支持)

操作步骤如下:

1、下载最新touchXML类库(下载);

2、将步骤1中的类库加入到xCode项目中,操作流程如下图所示:

TOUCHXML解析XML小结 - Milo - JAVA KEY

 2-1

TOUCHXML解析XML小结 - Milo - JAVA KEY

 2-2

TOUCHXML解析XML小结 - Milo - JAVA KEY

 2-3

提示:在实际开发中,为了保证路径一致,而非引用,可以把Copy itmes into destination group’s folder(if needed)”选项打上勾.

 

3、因为TouchXML使用了libxml2,故需要首先添加libxml2 library(右击FrameworksàaddàExitting Frameworksàlibxml2.dylib),然后在工程编译选项中按如下操作:

TOUCHXML解析XML小结 - Milo - JAVA KEY

 3-1{(Header Search Path)--(/usr/include/libxml2)}

TOUCHXML解析XML小结 - Milo - JAVA KEY

 3-2{(Other Linker Flags)--(-lxml2)}

4、编写要解析的xml文件(userInfo.xml),源代码如下:

<users>

     <user>

       <id>CN0001</id>

       <name>张三</name>

       <gender>01</gender>

       <age>23</age>

     </user>

     <user>

       <id>CN0002</id>

       <name>张三</name>

       <gender>02</gender>

       <age>22</age>

     </user>

     <user>

       <id>CN0003</id>

       <name>张三</name>

       <gender>02</gender>

       <age>25</age>

     </user>

     <user>

       <id>CN0004</id>

       <name>张三</name>

       <gender>01</gender>

       <age>21</age>

     </user>

</users>

步骤5、编写解析xmlobjective-c源代码,如下是点击某个按钮事件触发解析事件:

#pragma mark -

#pragma mark user code

- (void) parseXML:(UIButton *) button

{   

     NSString *XMLPath = [[[NSBundle mainBundle] resourcePath]

                      stringByAppendingPathComponent:@"userInfo.xml"

                      ];

     NSData *XMLData = [NSData dataWithContentsOfFile:XMLPath];

    

     CXMLDocument *document = [[CXMLDocument alloc] initWithData:XMLData

                                                 options:0

                                                   error:nil

                           ];

     //[self parseDire:document];

     [self parseRoot:document]; 

}

 

//方式一:直接查找

- (void) parseDire:(CXMLDocument *) document

{

     NSArray *users = NULL;

     users = [document nodesForXPath:@"//user" error:nil];

     for (CXMLElement *element in users)

     {

       if ([element isKindOfClass:[CXMLElement class]])

       {

           NSMutableDictionary *item = [[NSMutableDictionary alloc] init];

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

           {

              if ([[[element children] objectAtIndex:i] isKindOfClass:[CXMLElement class]])

              {

                  [item setObject:[[element childAtIndex:i] stringValue]

                          forKey:[[element childAtIndex:i] name]

                   ];

              }

           }

           NSLog(@"%@", item);

       }

     }

}

 

//方式二:从根节点查找

- (void) parseRoot:(CXMLDocument *) document

{

     CXMLElement *root = [document rootElement];

     NSArray *users = [root children];

    

     for (CXMLElement *element in users)

     {

       if ([element isKindOfClass:[CXMLElement class]])

       {

           NSMutableDictionary *item = [[NSMutableDictionary alloc] init];

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

           {

              if ([[[element children] objectAtIndex:i] isKindOfClass:[CXMLElement class]])

              {

                  [item setObject:[[element childAtIndex:i] stringValue]

                          forKey:[[element childAtIndex:i] name]

                   ];

              }

           }

           NSLog(@"%@", item);

       }

     }

}

 

 

其他:

2011-07-04

iMilo

  

 

  评论这张
 
阅读(2852)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017