TouchXML

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
  2. <rss xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0">  
  3.   <channel>  
  4.     <title>Yahoo! Weather - Chengdu, CH</title>  
  5.     <link>http://us.rd.yahoo.com/dailynews/rss/weather/Chengdu__CH/*http://weather.yahoo.com/forecast/CHXX0016_c.html</link>  
  6.     <description>Yahoo! Weather for Chengdu, CH</description>  
  7.     <language>en-us</language>  
  8.     <lastBuildDate>Wed, 03 Aug 2011 10:00 am CST</lastBuildDate>  
  9.     <ttl>60</ttl>  
  10.     <yweather:location city="Chengdu" region="" country="CH"/>  
  11.     <yweather:units temperature="C" distance="km" pressure="mb" speed="km/h"/>  
  12.     <yweather:wind chill="23" direction="0" speed="0"/>  
  13.     <yweather:atmosphere humidity="78" visibility="9.99" pressure="982.05" rising="0"/>  
  14.     <yweather:astronomy sunrise="6:22 am" sunset="7:57 pm"/>  
  15.     <image>  
  16.       <title>Yahoo! Weather</title>  
  17.       <width>142</width>  
  18.       <height>18</height>  
  19.       <link>http://weather.yahoo.com</link>  
  20.       <url>http://l.yimg.com/a/i/brand/purplelogo//uh/us/news-wea.gif</url>  
  21.     </image>  
  22.     <item>  
  23.       <title>Conditions for Chengdu, CH at 10:00 am CST</title>  
  24.       <geo:lat>30.67</geo:lat>  
  25.       <geo:long>104.02</geo:long>  
  26.       <link>http://us.rd.yahoo.com/dailynews/rss/weather/Chengdu__CH/*http://weather.yahoo.com/forecast/CHXX0016_c.html</link>  
  27.       <pubDate>Wed, 03 Aug 2011 10:00 am CST</pubDate>  
  28.       <yweather:condition text="Partly Cloudy" code="30" temp="23" date="Wed, 03 Aug 2011 10:00 am CST"/>  
  29.       <description><![CDATA[ 
  30. <img src="http://l.yimg.com/a/i/us/we/52/30.gif"/><br /> 
  31. <b>Current Conditions:</b><br /> 
  32. Partly Cloudy, 23 C<BR /> 
  33. <BR /><b>Forecast:</b><BR /> 
  34. Wed - Showers. High: 23 Low: 20<br /> 
  35. Thu - Thunderstorms. High: 26 Low: 21<br /> 
  36. <br /> 
  37. <a href="http://us.rd.yahoo.com/dailynews/rss/weather/Chengdu__CH/*http://weather.yahoo.com/forecast/CHXX0016_c.html">Full Forecast at Yahoo! Weather</a><BR/><BR/> 
  38. (provided by <a href="http://www.weather.com" >The Weather Channel</a>)<br/> 
  39. ]]></description>  
  40.       <yweather:forecast day="Wed" date="3 Aug 2011" low="20" high="23" text="Showers" code="11"/>  
  41.       <yweather:forecast day="Thu" date="4 Aug 2011" low="21" high="26" text="Thunderstorms" code="4"/>  
  42.       <guid isPermaLink="false">CHXX0016_2011_08_03_10_00_CST</guid>  
  43.     </item>  
  44.   </channel>  
  45. </rss>  
  46. <!-- api6.weather.sp2.yahoo.com uncompressed/chunked Tue Aug  2 19:19:00 PDT 2011 -->  


解析XML

//解析天气

- (void)XMLPaser:(NSString *)XMLSourceStr

{

weatherItemsDic_ = [[NSMutableDictionaryalloc] init];

//替换字段“yweather:”为空字符

NSString *tempXMLSourceStr = [XMLSourceStrstringByReplacingOccurrencesOfString:@"yweather:"withString:@""];

CXMLDocument *doc = [[[CXMLDocumentalloc] initWithXMLString:tempXMLSourceStroptions:0 error:nil] autorelease];

NSArray *nodes = [NSArrayarray];

nodes = [docnodesForXPath:@"//item"error:nil];

for (CXMLElement *nodein nodes) {

        

[weatherItemsDic_setObject:[selfpaserForCity:[[[nodeelementsForName:@"title"]objectAtIndex:0]stringValue]] forKey:@"city_key"];

[weatherItemsDic_setObject:[[[[nodeelementsForName:@"condition"]objectAtIndex:0]attributeForName:@"temp"]stringValue] forKey:@"current_temp_key"];

[weatherItemsDic_setObject:[[[[nodeelementsForName:@"forecast"]objectAtIndex:0]attributeForName:@"low"]stringValue] forKey:@"today_low_key"];

[weatherItemsDic_setObject:[[[[nodeelementsForName:@"forecast"]objectAtIndex:0]attributeForName:@"high"]stringValue] forKey:@"today_high_key"];

        [weatherItemsDic_setObject:[[[[nodeelementsForName:@"condition"]objectAtIndex:0]attributeForName:@"code"]stringValue] forKey:@"today_image_code"];


//NSLog(@"********* Condition:    %@    *******",[[[[node elementsForName:@"condition"] objectAtIndex:0]attributeForName:@"text"] stringValue]);

//NSLog(@"*********YYY    %@    *******",[[[[node elementsForName:@"condition"] objectAtIndex:0]attributeForName:@"code"] stringValue]);

//NSLog(@"********* current temperature:    %@    *******",[[[[node elementsForName:@"condition"] objectAtIndex:0]attributeForName:@"temp"] stringValue]);

//NSLog(@"********* date:    %@    *******",[[[[node elementsForName:@"condition"] objectAtIndex:0]attributeForName:@"date"] stringValue]);

//

////第一天的预报

//NSLog(@"********* 1date:    %@    *******",[[[[node elementsForName:@"forecast"] objectAtIndex:0]attributeForName:@"day"] stringValue]);

//NSLog(@"********* date:    %@    *******",[[[[node elementsForName:@"forecast"] objectAtIndex:0]attributeForName:@"date"] stringValue]);

//NSLog(@"********* date:    %@    *******",[[[[node elementsForName:@"forecast"] objectAtIndex:0]attributeForName:@"low"] stringValue]);

//NSLog(@"********* date:    %@    *******",[[[[node elementsForName:@"forecast"] objectAtIndex:0]attributeForName:@"high"] stringValue]);

//NSLog(@"********* date:    %@    *******",[[[[node elementsForName:@"forecast"] objectAtIndex:0]attributeForName:@"text"] stringValue]);

//NSLog(@"********* date:    %@    *******",[[[[node elementsForName:@"forecast"] objectAtIndex:0]attributeForName:@"code"] stringValue]);

////第二天的预报

//NSLog(@"********* 1date:    %@    *******",[[[[node elementsForName:@"forecast"] objectAtIndex:1]attributeForName:@"day"] stringValue]);

//NSLog(@"********* date:    %@    *******",[[[[node elementsForName:@"forecast"] objectAtIndex:1]attributeForName:@"date"] stringValue]);

//NSLog(@"********* date:    %@    *******",[[[[node elementsForName:@"forecast"] objectAtIndex:1]attributeForName:@"low"] stringValue]);

//NSLog(@"********* date:    %@    *******",[[[[node elementsForName:@"forecast"] objectAtIndex:1]attributeForName:@"high"] stringValue]);

//NSLog(@"********* date:    %@    *******",[[[[node elementsForName:@"forecast"] objectAtIndex:1]attributeForName:@"text"] stringValue]);

//NSLog(@"********* date:    %@    *******",[[[[node elementsForName:@"forecast"] objectAtIndex:1]attributeForName:@"code"] stringValue]);

}

}
















TOUCHXML解析xml

直奔主题。-》》》》》》》》》》》》》》

既然要使用touchXml解析xml。那么首先应该下载touchxml类库。猛击我。点击左边的zip下载。

打开下载好的类库。找到里面的Source文件夹。这就是需要用到的类库。

然后在xcode建立一个项目。在项目中新建一个文件夹,名字随便,就叫touchxml吧。然后将Source中的文件

拖入touchxml文件夹中。尽量将Copy itmes into destination group’s folder(if needed)勾选上。

        

这时候,你编译他是不会通过的。你需要首先添加libxml2 library。右键Frameworks。通过下面的操作

    

找到libxml2.dylib添加到工程中。这还没有结束,不能使用touchxml。还需要在工程选项中进行配置。

点击project-》Edit Porject Settings。在窗口的搜索栏中输入 header search.然后双击

Header Search Paths 后面空白。点击左下角+,打上对号,然后在Path中输入/usr/include/libxml2

 

在搜索框中输入other linker flags 。添加上字符-lxml2。然后command +B编译,success。

这个,我们就来个练习用一下这个touchxml。

起手我们用它的时候,先在项目里建立一个xml文件。没有xml解析什么呀。~~~~!

在Resources文件夹下Add-》New File,选择Mac OS x下的 Resource。然后选择stringFile。

文件名随意,就xmlfile.xml吧。内容可以复制下面的内容。

复制代码
<books>
<iphonebook>
<id>01</id>
<name>iPhoneDeveloper's</name>
<page>123</page>
</iphonebook>
<iphonebook>
<id>02</id>
<name>ipadDeveloper's</name>
<page>220</page>
</iphonebook>
<wp7book>
<id>03</id>
<name>wp7developer</name>
<page>281 </page>
</wp7book>
<wp7book>
<id>04</id>
<name>windows phone 7</name>
<page>300</page>
</wp7book>
</books>
复制代码


直接上代码说话吧。。。。记得引用它的头文件。#import "TouchXML.h" 

 

复制代码
- (void)viewDidLoad 
{
//获得文件路径
NSString *XMLPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"userInfo.xml"];
//取得数据
NSData *XMLData = [NSData dataWithContentsOfFile:XMLPath];
//生成CXMLDocument对象
CXMLDocument *document = [[CXMLDocument alloc] initWithData:XMLData
options:0
error:nil
];
    //[self parseDire:document];
[self parseRoot:document];
[super viewDidLoad];
}
复制代码

[self parseDire:document];

[self parseRoot:document]; 这两个是两种解析的方式,可以分别尝试下。

 

复制代码
- (void) parseDire:(CXMLDocument *) document
{
NSArray *books = NULL;
books = [document nodesForXPath:@"//iphonebook" error:nil];
for (CXMLElement *element in books)
{
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(@"%@", [[element childAtIndex:i] stringValue]);
}
}
//NSLog(@"%@", item);
}
}
//
books = [document nodesForXPath:@"//wp7book" error:nil];
for (CXMLElement *element in books)
{
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(@"%@", [[element childAtIndex:i] stringValue]);
}
}
//NSLog(@"%@", item);
}
}
}
复制代码

-------------------------------

复制代码
- (void) parseRoot:(CXMLDocument *) document
{
CXMLElement *root = [document rootElement];
NSArray *books = [root children];

for (CXMLElement *element in books)
{
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]])
{
if ([[element name] isEqualToString:@"iphonebook"])
{
[item setObject:[[element childAtIndex:i] stringValue] forKey:[[element childAtIndex:i] name]];
NSLog(@"1%@", [[element childAtIndex:i] stringValue] );
}
if ([[element name] isEqualToString:@"wp7book"])
{
[item setObject:[[element childAtIndex:i] stringValue] forKey:[[element childAtIndex:i] name]];
NSLog(@"2%@", [[element childAtIndex:i] stringValue] );
}
}
}
//NSLog(@"%@", item);
}
}
}
复制代码





























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值