Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解析iphone中包含属性的xml文件_Iphone_Objective C_Xml - Fatal编程技术网

如何解析iphone中包含属性的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文件呢

    <?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解析。或的副本