How can i Parse this xml using NSXMLParser in ios?

后端 未结 3 1837
日久生厌
日久生厌 2020-12-16 05:08

    Radio1http://app.syndicat         


        
                      
相关标签:
3条回答
  • 2020-12-16 05:23

    Try to this one

        - (void)viewDidLoad
    
       {
          NSURL *url = [[NSURL alloc]initWithString:@"yourURL"];
            NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:url];
            [parser setDelegate:self];
           BOOL result = [parser parse];
       }
    
        - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
        {
            NSLog(@\"Did start element\");
        if ( [elementName isEqualToString:@"root"])
         {
            NSLog(@"found rootElement");
            return;
        }
        }
    
        - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
        {
            NSLog(@"Did end element");
            if ([elementName isEqualToString:@"root"]) 
                {
                  NSLog(@"rootelement end");
                }
    
        }
        - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
        {
            NSString *tagName = @"column";
    
           if([tagName isEqualToString:@"column"])
          {
               NSLog(@"Value %@",string);
          }
    
        }
    
    0 讨论(0)
  • 2020-12-16 05:34

    Ok you asked for a libxml example. I used it in a project but with TBXML instead of NSXMLParser because this one caused important problems of encoding and data retrieving.

    First you have to download TBXML.m and TBXML.h files from the web and import them into your project. Then you also have to link libxml2.dylib to your project in Link Binary with Libraries.

    Once this done, you will have to do this to retrieve your data (based on your XML source) :

    NSData *xmlData = [NSData dataWithContentsOfURL:yourURL];
    TBXML *tbxml = [TBXML newTBXMLWithXMLData:data error:nil];
    [self getData:tbxml.rootXMLElement];
    
    - (void) getData : (TBXMLElement *) element
    {
        do {
            if([[TBXML elementName:element] isEqualToString:@"table"])
            {
                if([[TBXML elementName:element] isEqualToString:@"column"])
                { 
                    if([[TBXML attributeName:element] isEqualToString:@"nameradio"])
                    {
                        // You decide what to do here
                    }
                }
            }
            if (element->firstChild) [self getData:element->firstChild];
        } while(element = element->nextSibling);
    }
    

    You probably will have to change this code but here you have all the basic things you need.

    0 讨论(0)
  • 2020-12-16 05:38

    This is how you can use NSXMLParser :

    In your .h file declare :

    NSMutableData       *webPortFolio;
    NSMutableString     *soapResultsPortFolio;
    NSURLConnection     *conn;
    
    //---xml parsing---
    
    NSXMLParser         *xmlParserPortFolio;
    BOOL                elementFoundPortFolio;
    NSMutableURLRequest *req;
    
    NSString            *theXMLPortFolio;
    NSString            *strSoapMsg;
    UIAlertView         *alertView;
    

    In your .m file use the following code:

    -(void)callURL
    {
    
         //Your logic to call URL.
    
         conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];
         if (conn)
         {
             webPortFolio = [[NSMutableData data] retain];
         }
    }
    And to handle the response you can use following functions :
    
    -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
    {
        [webPortFolio setLength:0];     
    }
    
    -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {
        [webPortFolio appendData:data];
    }
    
    -(void) connection:(NSURLConnection *) connection didFailWithError:(NSError *) error
    {
    
        NSLog(@"error...................%@",[error description]);
        [webPortFolio release];
        [connection release];
    }
    
    -(void) connectionDidFinishLoading:(NSURLConnection *) connection
    {
    
        //Check the request and returns the response.
    
        NSLog(@"DONE. Received Bytes: %d", [webPortFolio length]);
    
        theXMLPortFolio = [[NSString alloc] 
                          initWithBytes: [webPortFolio mutableBytes] 
                          length:[webPortFolio length] 
                          encoding:NSUTF8StringEncoding];
    
        //---shows the XML---
    
        NSLog(@"shows the XML %@",theXMLPortFolio);
        [theXMLPortFolio release];    
    
        if(xmlParserPortFolio)
        {
            [xmlParserPortFolio release];
        }
        xmlParserPortFolio = [[NSXMLParser alloc] initWithData: webPortFolio];
        [xmlParserPortFolio setDelegate: self];
        [xmlParserPortFolio setShouldResolveExternalEntities:YES];
        [xmlParserPortFolio parse];
        [webPortFolio release];
        [connection release];
    }
    
    //---when the start of an element is found---
    -(void)  parser:(NSXMLParser *) parser 
    didStartElement:(NSString *) elementName 
       namespaceURI:(NSString *) namespaceURI 
      qualifiedName:(NSString *) qName
         attributes:(NSDictionary *) attributeDict
    {
    
        if( [elementName isEqualToString:@"your_tag_name"])
        {
            if (!soapResultsPortFolio)
            {
                soapResultsPortFolio = [[NSMutableString alloc] init];
            }
            elementFoundPortFolio = TRUE;
            NSLog(@"Registration...%@",soapResultsPortFolio);
        }
        else if([elementName isEqualToString:@"your_tag_name"])
        {
            elementFoundPortFolio = TRUE;
        }
        else if([elementName isEqualToString:@"your_tag_name"])
        {
            elementFoundPortFolio = TRUE;
        }
        else if([elementName isEqualToString:@"your_tag_name"])
        {
            elementFoundPortFolio = TRUE;
        }
    
    }
    
    -(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)string
    {
        if (elementFoundPortFolio)
        {
            [soapResultsPortFolio appendString: string];
        }      
    }
    
    - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
    {
        NSLog(@"Parser error %@ ",[parseError description]);
    }
    
    
    //---when the end of element is found---
    -(void)parser:(NSXMLParser *)parser 
    didEndElement:(NSString *)elementName 
     namespaceURI:(NSString *)namespaceURI 
    qualifiedName:(NSString *)qName
    {
        if ([elementName isEqualToString:@"your_tag_name"])
        {          
            NSLog(@"display the soap results%@",soapResultsPortFolio);
        }
        else if([elementName isEqualToString:@"your_tag_name"])
        {          
            //Perform required action
        }
        else if([elementName isEqualToString:@"your_tag_name"])
        {
            //Perform required action
        }
        else if([elementName isEqualToString:@"your_tag_name"])
        {
            //Perform required action
        }
    
        [soapResultsPortFolio setString:@""];
        elementFoundPortFolio = FALSE;
    }
    
    0 讨论(0)
提交回复
热议问题