如何解析iphone中包含属性的xml文件
我在下面的xml文件中有一个示例。我想分析元素如何解析iphone中包含属性的xml文件,iphone,objective-c,xml,Iphone,Objective C,Xml,我在下面的xml文件中有一个示例。我想分析元素当前日期时间,条件,湿度,图标,风条件,低,高。所有这些元素都包含属性。我知道如何解析一个简单的xml文件。但所有这些元素都包含属性值 那么我该如何解析这个xml文件呢 <?xml version="1.0" ?> <xml_api_reply version="1"> <weather module_id="0" tab_id="0" mobile_row="0" mobile_zip
当前日期时间,条件
,湿度
,图标
,风条件
,低
,高
。所有这些元素都包含属性。我知道如何解析一个简单的xml文件。但所有这些元素都包含属性值
那么我该如何解析这个xml文件呢
<?xml version="1.0" ?>
<xml_api_reply version="1">
<weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
<forecast_information>
<city data="" />
<postal_code data="" />
<latitude_e6 data="50500000" />
<longitude_e6 data="30500000" />
<forecast_date data="2011-05-27" />
<current_date_time data="2011-05-27 04:30:00 +0000" />
<unit_system data="US" />
</forecast_information>
<current_conditions>
<condition data="Clear" />
<temp_f data="57" />
<temp_c data="14" />
<humidity data="Humidity: 59%" />
<icon data="http://g0.gstatic.com/images/icons/onebox/weather_sunny-40.gif" />
<wind_condition data="Wind: S at 9 mph" />
</current_conditions>
<forecast_conditions>
<day_of_week data="Fri" />
<low data="54" />
<high data="72" />
<icon data="http://g0.gstatic.com/images/icons/onebox/weather_partlycloudy-40.gif" />
<condition data="Mostly Sunny" />
</forecast_conditions>
<forecast_conditions>
<day_of_week data="Sat" />
<low data="52" />
<high data="79" />
<icon data="http://g0.gstatic.com/images/icons/onebox/weather_partlycloudy-40.gif" />
<condition data="Mostly Sunny" />
</forecast_conditions>
<forecast_conditions>
<day_of_week data="Sun" />
<low data="55" />
<high data="84" />
<icon data="http://g0.gstatic.com/images/icons/onebox/weather_partlycloudy-40.gif" />
<condition data="Mostly Sunny" />
</forecast_conditions>
<forecast_conditions>
<day_of_week data="Mon" />
<low data="63" />
<high data="84" />
<icon data="http://g0.gstatic.com/images/icons/onebox/weather_partlycloudy-40.gif" />
<condition data="Mostly Sunny" />
</forecast_conditions>
</weather>
</xml_api_reply>
Please help me in solving this problem. Thanks. Can anybody provide me any sample code on this?
i have done this code to parse the above xml file but my problem is checks only the first xml tag i.e the root element xml_ap_reply for every checking
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString*) elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString*)qualifiedName attributes:(NSDictionary*)attributeDict
{
if ([elementName isEqualToString:@"xml_api_reply"])
{
mWeather = [[TWeatherElement alloc]init];
}
if([elementName isEqualToString:@"current_date_time"])
{
NSMutableArray *temp=[[NSMutableArray alloc]init];
self.mParserArray=temp;
[temp release];
[mParserArray addObject:[attributeDict valueForKey:@"data"]];
}
if([elementName isEqualToString:@"condition"])
{
NSMutableArray *temp=[[NSMutableArray alloc]init];
self.mParserArray=temp;
[temp release];
[mParserArray addObject:[attributeDict valueForKey:@"data"]];
}
if([elementName isEqualToString:@"humidity"])
{
NSMutableArray *temp=[[NSMutableArray alloc]init];
self.mParserArray=temp;
[temp release];
[mParserArray addObject:[attributeDict valueForKey:@"data"]];
}
if([elementName isEqualToString:@"icon"])
{
NSMutableArray *temp=[[NSMutableArray alloc]init];
self.mParserArray=temp;
[temp release];
[mParserArray addObject:[attributeDict valueForKey:@"data"]];
}
if([elementName isEqualToString:@"wind_condition"])
{
NSMutableArray *temp=[[NSMutableArray alloc]init];
self.mParserArray=temp;
[temp release];
[mParserArray addObject:[attributeDict valueForKey:@"data"]];
}
if([elementName isEqualToString:@"low"])
{
NSMutableArray *temp=[[NSMutableArray alloc]init];
self.mParserArray=temp;
[temp release];
[mParserArray addObject:[attributeDict valueForKey:@"data"]];
}
if([elementName isEqualToString:@"high"])
{
NSMutableArray *temp=[[NSMutableArray alloc]init];
self.mParserArray=temp;
[temp release];
[mParserArray addObject:[attributeDict valueForKey:@"data"]];
}
请帮我解决这个问题。谢谢有人能给我一些关于这个的示例代码吗?
我编写了这段代码来解析上面的xml文件,但我的问题是每次检查只检查第一个xml标记,即根元素xml\u ap\u reply
-(void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qualifiedName属性:(NSDictionary*)attributeDict
{
if([elementName IsequalString:@“xml\u api\u reply”])
{
mWeather=[[TweateRelation alloc]init];
}
if([elementName IsequalString:@“当前日期时间”])
{
NSMutableArray*temp=[[NSMutableArray alloc]init];
self.mparserray=温度;
[临时释放];
[MParsearray addObject:[attributeDict valueForKey:@“数据”];
}
if([elementName IsequalString:@“条件”])
{
NSMutableArray*temp=[[NSMutableArray alloc]init];
self.mparserray=温度;
[临时释放];
[MParsearray addObject:[attributeDict valueForKey:@“数据”];
}
if([elementName IsequalString:@“湿度”])
{
NSMutableArray*temp=[[NSMutableArray alloc]init];
self.mparserray=温度;
[临时释放];
[MParsearray addObject:[attributeDict valueForKey:@“数据”];
}
如果([elementName IsequalString:@“icon”])
{
NSMutableArray*temp=[[NSMutableArray alloc]init];
self.mparserray=温度;
[临时释放];
[MParsearray addObject:[attributeDict valueForKey:@“数据”];
}
如果([elementName IsequalString:@“风况”])
{
NSMutableArray*temp=[[NSMutableArray alloc]init];
self.mparserray=温度;
[临时释放];
[MParsearray addObject:[attributeDict valueForKey:@“数据”];
}
if([elementName IsequalString:@“low”])
{
NSMutableArray*temp=[[NSMutableArray alloc]init];
self.mparserray=温度;
[临时释放];
[MParsearray addObject:[attributeDict valueForKey:@“数据”];
}
if([elementName IsequalString:@“high”])
{
NSMutableArray*temp=[[NSMutableArray alloc]init];
self.mparserray=温度;
[临时释放];
[MParsearray addObject:[attributeDict valueForKey:@“数据”];
}
请帮我解决这个问题。谢谢假设
您需要数据值,因此您必须做的是:
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
if([elementName isEqualToString:@"postal_code"])
{
NSMutableArray *temp = [[NSMutableArray alloc] init];
self.registrationResponseArray = temp;
[temp release];
[registrationResponseArray addObject:[attributeDict valueForKey:@"data"]];
}
}
[attributeDict valueForKey:@“data”]
将为您提供属性值,然后您可以在任何位置添加(无论您使用的是什么结构)。假设
您需要数据值,因此您必须做的是:
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
if([elementName isEqualToString:@"postal_code"])
{
NSMutableArray *temp = [[NSMutableArray alloc] init];
self.registrationResponseArray = temp;
[temp release];
[registrationResponseArray addObject:[attributeDict valueForKey:@"data"]];
}
}
[attributeDict valueForKey:@“data”]
将为您提供属性值,然后您可以在任何位置添加属性值(无论您使用的是什么结构)。您可以使用DDXML解析器,只需使用它即可
[[Element attributeForName:@"url"] stringValue];
其中attributeForName是一个可供您使用的函数。
这(DDXML)是一个非常好的libxml解析器。您可以使用DDXML解析器并简单地使用它
[[Element attributeForName:@"url"] stringValue];
其中attributeForName是一个可供您使用的函数。
这个(DDXML)是一个非常好的libxml解析器。@Rocky你必须提到这个答案是为了解释如何提取attibutes。我写了这段代码,但它总是检查根元素的ever标记。@Rocky你必须提到这个答案是为了解释如何提取attibutes。我写了这段代码,但它总是检查根元素的ever标记。这里这是一个很好的教程,演示了使用GDataXMLParser进行XML解析。或的副本这里是一个很好的教程,演示了使用GDataXMLParser进行XML解析。或的副本