html
  • ios
  • objective-c
  • xml
  • xml-parsing
  • 2015-07-28 4 views 0 likes 
    0

    Призывая к API я получаю ответ в следующем формате:как отдельные значения внутри XML-тег прошивки

    <?xml version="1.0" encoding="UTF-8" standalone="no"?> 
     
    <response> 
     
        <status>success</status> 
     
        <ads>&lt;a href='http://52.7.130.201/oapi/clickAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'&gt;&lt;img src='http://52.7.130.201/oapi/getAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'/&gt;&lt;/a&gt;</ads> 
     
    </response>

    Я извлекая целое значение внутри тега и хранит внутри string.Below является его код:

    NSString *html = [xml.documentRoot getNamedChild:@"ads"].text; 
    

    Теперь мне нужно отдельно хранить значение внутри «HREF» и «IMG SRC» в «реклама» т ag.How, чтобы сделать это, пожалуйста, помогите ..

    ответ

    1
    //as the data you have provided 
    
    NSString *html [email protected]"&lt;a href='http://52.7.130.201/oapi/clickAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'&gt;&lt;img src='http://52.7.130.201/oapi/getAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'/&gt;&lt;/a&gt"; 
    
    
    
        NSString *href; 
        NSString *img_src; 
        NSRange range = [html rangeOfString:@"href=\'"]; 
        NSString *tempUrl=[html substringFromIndex:range.location+6]; 
        NSRange range2 = [tempUrl rangeOfString:@"\'"]; 
        href=[tempUrl substringWithRange:NSMakeRange(0, range2.location)]; 
    
        range = [html rangeOfString:@"img src=\'"]; 
        tempUrl=[html substringFromIndex:range.location+9]; 
        range2 = [tempUrl rangeOfString:@"\'"]; 
        img_src=[tempUrl substringWithRange:NSMakeRange(0, range2.location)]; 
    
    
    
        NSLog(@"your href is %@ and your img_src is %@",href,img_src); 
    
    +0

    : thankyou..this работает .Но это применимо к каждому в ответ выше формата? – haritha

    +0

    нет, он не будет работать с каждым ответом – Bhanupriya

    1

    Прежде всего, необходимо преобразовать это в нужном формате HTML, как это:

    NSString *html = @"&lt;a href='http://52.7.130.201/oapi/clickAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'&gt;&lt;img src='http://52.7.130.201/oapi/getAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'/&gt;&lt;/a&gt;"; 
    
    NSData *stringData = [html dataUsingEncoding:NSUTF8StringEncoding]; 
    
    NSDictionary *options = @{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType}; 
    NSAttributedString *decodedString; 
    decodedString = [[NSAttributedString alloc] initWithData:stringData 
                   options:options 
                 documentAttributes:NULL 
                    error:NULL]; 
    
    NSString *finalHtml = [decodedString string]; //it will return <a href='http://52.7.130.201/oapi/clickAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'><img src='http://52.7.130.201/oapi/getAd;jsessionid=679E3CFF39C3D7792E7F6915318E3156.soma-i-915abc39'/></a> 
    

    Затем разобрать из HTML. Это может помочь

    +0

    : вы finalHtml строка не возвращает никакого значения. Пусто – haritha

    +0

    Нет, я проверил его. Распечатайте html и проверьте, если вы производите ошибку. Я добавил строку комментария также для finalHtml – Bhanupriya

    +0

    : Фактически Используя код, «NSString * html = [xml.documentRoot getNamedChild: @« ads »]. Text:« Я уже получаю то же значение, что и в finalPhtml ». Мне нужно отделить значения. – haritha

    0

    Это решило мою проблему - (Недействительными) checkForLINK

    {

    NSError *error= NULL; 
    
    NSString* htmlString = @" html=<a href='http://52.7.43.135/oapi/clickAd;jsessionid=4373A2D1CC3FAE62BDF57033C385ADC7.soma-i-65e6329b'><img src='http://52.7.43.135/oapi/getAd;jsessionid=4373A2D1CC3FAE62BDF57033C385ADC7.soma-i-65e6329b'/></a>"; 
    
    
    
    NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:&error]; 
    
    
    
    [detector enumerateMatchesInString:htmlString 
    
              options:0 
    
              range:NSMakeRange(0, htmlString.length) 
    
             usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) 
    
    { 
    
        NSURL * urlStr = result.URL; 
    
    
    
        NSLog(@"URL = %@",urlStr); 
    
    }]; 
    

    }

    Смежные вопросы