2011-09-29 81 views
0

我不知道如何在它上面指導我在這個 我必須抓取html文件,這是我的資源文件夾example.html在應用程序中我不知道如何解析這一切在iphone文件有一個人幫我,我怎麼可以分析在iphone這個靜態的html文件請explane有人給我如何在iphone中解析HTML文件

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><META http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Ryanair.com</title><link rel="stylesheet" type="text/css" href="css/Ryanair/Standard.css" xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:usr="urn:the-xml-files:xslt"><link rel="stylesheet" type="text/css" href="css/Ryanair/datePicker.css" xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:usr="urn:the-xml-files:xslt"><script type="text/javascript" src="/data/js/skysales_3F5DBD0632207A3932CD626AEDC1A849.js"></script><script type="text/javascript" src="/data/js/skysales_B5A6631CD62DEC33073F138AE4A7C8D2.js"></script><script src="http://www.google.com/jsapi"></script><script type="text/javascript" charset="utf-8"> 
      google.load('ads.search', '2'); 
     </script><script type="text/javascript" language="javascript" xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:usr="urn:the-xml-files:xslt"> 
     Date.dayNames=['Sunday','Monday','Tuesday','Wednesday','Thusday','Friday','Saturday']; 
     Date.monthNames=['January','February','March','April','May','June','July','August','September','October','November','December']; 
     if (typeof jQuery != 'undefined') { 
     $.dpText={ 
      TEXT_PREV_YEAR:'Previous year', 
      TEXT_PREV_MONTH:'Previous month', 
      TEXT_NEXT_YEAR:'Next year', 
      TEXT_NEXT_MONTH:'Next month', 
      TEXT_CLOSE:'Close', 
      TEXT_CHOOSE_DATE:' ' 
     }; 
     } 

     var datePickerFormat='yyyy-mm-dd'; 
     var datePickerDelimiter='-'; 
     Date.format=datePickerFormat; 
      var pln="en"; 
      var pcu="IE"; 
    </script></head><body><noscript xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:usr="urn:the-xml-files:xslt"><p class="error noprint"> 
     ERROR: 
     This service makes use of Javascript, which appears to be turned off. 
     Click <a href="activateJavascript.htm">here</a> to learn how to activate it. 
    </p></noscript><form novalidate="true"method="post" action="FRSelect.aspx" id="SkySales" ><div><input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value=""><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value=""><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUBMGRkg4UKvNNb1NbM14/2n9zUxhNQ++A="></div><div id="header" style="width: 100%;"><div id="blu"><a href="http://www.ryanair.com"><img src="Images/Ryanair/logoyelbg.gif" width="228" height="42" alt="Ryanair.com Homepage" title="Ryanair.com Homepage"></a></div><div id="yel" onclick="this.firstChild.innerHTML='WWW156 2011-09-29 06:31:09 reglixj3c555jw1v|413894465 ';"><span title="DNS: www156 62.73.129.156 10.37.2.156 "> </span>Search » <b>Select</b> » Services » Payment » Itinerary</div><input type="hidden" id="sysdate" value="2011-09-29"><input type="hidden" id="systime" value="06:31:09"></div><div><div id="body"><div id="wrapper"><div id="error"><input type="hidden" name="errorlist" value=""><script language="Javascript" type="text/javascript"> 
     $(document).ready(function(){ 
     var msg = "";   

     if (msg.length > 0) { 
      msg = msg.replace(/([\.|:])\s*([^\.]+)/g,"$1``$2") 
      var msg_array = msg.split("``"); 
      var newMsg = ""; 
      for (var idx = 1; idx < msg_array.length + 1; idx++){ 
      if (newMsg.indexOf(msg_array[msg_array.length - idx]) == -1) { 
       newMsg = msg_array[msg_array.length - idx] + "\n" + newMsg ; 
      } 
      } 
      alert(newMsg); 
     } 
     }); 
    </script></div><div id="main"><p><b>Here are the flights and fares available on the requested date(s).</b></p><ol><li>Select the flight of your choice.</li><li>Click on the fare name to see the fare rules.</li></ol><script language="javascript" type="text/javascript"> 
     $(document).ready(function() {   
      var minDepArr = ('2011 09 29 12 31').split(' '); 
     var minDep = new Date(minDepArr[0],minDepArr[1]-1,minDepArr[2],minDepArr[3],minDepArr[4]); 


     $(".avlLst").each(function(){ 
     if($(this).find("input[type='radio']").size() == 0){ 
      $("input[id$='_ButtonSubmit']").attr('disabled', 'disabled').css('background-color','#C0C0C0'); 
     } 
     }); 


     $("input[type=radio]").each(function() { 
     var re = new RegExp("[0-9]{2}\/[0-9]{2}\/[0-9]{4}\\s[0-9]{2}\:[0-9]{2}"); 
     var m = re.exec($(this).val()); 
     if(m != null){ 
     var regexp = /([0-9]{2})(\/)([0-9]{2})(\/)([0-9]{4})(\s)([0-9]{2}):([0-9]{2})/gi; 
     var depArr = m[0].replace(regexp,'$5 $1 $3 $7 $8').split(' '); 
     var dep = new Date(depArr[0],depArr[1]-1,depArr[2],depArr[3],depArr[4]); 
     if(dep <= minDep){ 
       $(this).attr('disabled', 'disabled').attr('checked',''); 
       } 
      } 
      }); 
     }); 

     function setTabIndex(marketIndex, index){ 
     var fld=['', 
     '']; 
     var i=marketIndex==1?0:1; 
     document.getElementById(fld[i]).value = index; 
     postBack(); 
     } 

     function postBack(){ 
     ; 
     } 

     var pleaseWaitMessage = 'Please Wait...'; 
     var marketHeaders = ['','Going Out','Coming Back']; 

     function feesTaxes(fltKeys,names){ 
     var mkts=[]; 
     for(var k in names){ 
     var market=names[k].charAt(names[k].length-1); 
     mkts.push(market); 
     $("div#taxAndFeeInclusiveDivBody"+market).css('background-color','#A3AECC').find(".hdr").html('<span>'+pleaseWaitMessage+'</span>').css('background-color','#FFFF99') 
     .ajaxError(function(evt,req,sett){ 
     $(this).html('<span>Unavailable... try again!</span>').css('background-color','#FFBBBB'); 
     }); 
     } 
     $.get("FRTaxAndFeeInclusiveDisplay-resource.aspx", 
     {'flightKeys':fltKeys.join('+++'), 'numberOfMarkets':fltKeys.length, 'keyDelimeter':'+++'}, 
     function(data,stat){ 
     $htm=$(data); 
     for(var i=0,ml=mkts.length;i<ml;i++){ 
     if($($htm[i]).html().match(/RefreshWindow/)) {     
      window.location.reload(true); 
     }  
     $("div#taxAndFeeInclusiveDivBody"+mkts[i]).css('background-color','white').html('<p class="hdr">'+marketHeaders[mkts[i]]+'</p>'+$($htm[i]).html()); 
     } 
     $('big#totalPrice').text($($htm[$htm.size()-1]).text()); 
     } 
    ); 
     }  

     function selFlight(o){ 
     if(!o) return false;  
     $(o).parents('table:first').find("div[class^='planeImg']").css('background-position','top left');  
     $(o).parents('table:first').find("tr").removeAttr('class'); 
     var tro=$(o).parents('tr:first').attr('class','on');  
     var pval=[],pname=[],doJson=true;  

     var A=parseIDDate(tro.attr("id"));  
     var outDTarr=new Date(A[1],A[2],A[3],A[4]+1,A[5],A[6]);  

     $(".avlLst table").each(function(){   
     var $chkbs=$(this).find("input[type='radio'][name*='market']");  

     if(A[0]==1 && $chkbs.is("input[name*='market2']")) 
     {   
      $chkbs.each(function(){ 
      var troB=$(this).parents('tr:first'); 
      var B=parseIDDate(troB.attr("id")); 
      var inDTdep=new Date(B[1],B[2],B[3],B[4],B[5],B[6]); 
      if(outDTarr>=inDTdep) 
     { 
     $(this).attr('disabled', 'disabled').attr('checked',''); 
     $("div[class^='planeImg']", troB).css('background-position','top left').attr('disabled', 'disabled'); 
     }else 
     { 
     $(this).attr('disabled', ''); 
     $("div[class^='planeImg']", troB).attr('disabled', ''); 
     } 
     }); 
     } 

     var $chkb=$chkbs.filter(':checked'); 

     if($chkb.size()!=0) 
     { 
     pval.push($chkb.val());pname.push($chkb.attr('name')); 
     $chkb.parent().prev().children('div').css('background-position','top right');  
     } 
     else if($chkbs.is(':enabled')) 
     { 
     doJson=false; 
     if(A[0]==1) 
     { 
     $chkbs.filter(':enabled:first').attr('checked','true').trigger('click');  
     } 

     } 
     else $("div[id*='taxAndFeeInclusiveDivBody']", this.parent).find("*:not(.hdr)").remove(); 

     }); 

     if(doJson) 
     { 
      feesTaxes(pval,pname); 
     } 
     } 

     function parseIDDate(s){ 
     var a=s.split('_'); 
     for(var k in a) a[k]=parseInt(a[k].replace(/^0([0-9]+)/,'$1')); 
     return a; 
     } 

     var nbrMarkets=2; 

     var dateRanges=[[],[new Date(2011,9,2), new Date(2011,9,2)],[new Date(2011,9,5), new Date(2011,9,5)]]; 
     var localization={ 
     inPast:'You cannot search earlier than the current date.', 
     datesOverlap:'Your outbound date range cannot overlap your return date range', 
     timesOverlap:'Please recheck the flights you selected\nYour second flight(s) must DEPART at least 1 hour(s) after your first flight(s) ARRIVES!', 
     bookToday:'Unfortunatley due to security restrictions, If you wish to book a flight departing today.\nYou must either make the booking through your local RYANAIR CALL CENTER or at the AIRPORT.' 
     }; 

     function checkDate(market,days){ 
     var flexi=Math.abs(days)==7?true:false; 
     var idx=days>0?1:0; 
     var today=new Date(), tomorrow=new Date(); tomorrow.addDays(1); 
     if(idx==0 && dateRanges[market][idx] <= today){ 
     alert(localization['inPast']); 
     return false; 
     } 
     if(nbrMarkets > 1){ 
     var overlap=false; 
     if(market==2 && idx==0 && dateRanges[market][idx] <= dateRanges[market-1][idx]) overlap=true; 
     else if(market==1 && idx==1 && dateRanges[market][idx] >= dateRanges[market+1][idx]) overlap=true; 
     if(overlap){ 
     alert(localization['datesOverlap']); 
     return false; 
     } 
     } 
     return true; 
     }  

     function checkTimes(){ 
     if(nbrMarkets < 2) return true; 
     var DA=[0,0]; 
     $(".avlLst table input[type='radio']:checked").each(function(){ 
     var A=parseIDDate($(this).parents("tr:first").attr("id")); 
     DA[A[0]-1]=new Date(A[1],A[2],A[3],A[4],A[5],A[6]); 
     }); 
     $("input[id*='oTime']").each(function(){ 
     var A=parseIDDate($(this).val()); 
     DA[A[0]-1]=new Date(A[1],A[2],A[3],A[4],A[5],A[6]); 
     }); 
     if((DA[1]-DA[0]) <= (60*60*1000)){ 
     alert(localization['timesOverlap']); 
     return false; 
     } 
     return true; 
     } 

    $(document).ready(function(){ 
     // This could probably be cleaned up 
     $("a[id*='LinkButtonNextDay1']").click(function(){return checkDate(1,1);}); 
     $("a[id*='LinkButtonNextWeek1']").click(function(){return checkDate(1,7);}); 
     $("a[id*='LinkButtonPreviousDay1']").click(function(){return checkDate(1,-1);}); 
     $("a[id*='LinkButtonPreviousWeek1']").click(function(){return checkDate(1,-7);}); 
     $("a[id*='LinkButtonNextDay2']").click(function(){return checkDate(2,1);}); 
     $("a[id*='LinkButtonNextWeek2']").click(function(){return checkDate(2,7);}); 
     $("a[id*='LinkButtonPreviousDay2']").click(function(){return checkDate(2,-1);}); 
     $("a[id*='LinkButtonPreviousWeek2']").click(function(){return checkDate(2,-7);}); 

     $("a[id*='tab_']").click(function(){ 
     var A=this.id.split("_"); 
     var tabDate=new Date(A[2],A[3]-1,A[4]); 
     var dtime=new Date(), today=new Date(dtime.getFullYear(),dtime.getMonth(),dtime.getDate()); 
     return true; 
     }); 

     $("table[id*=ttable] th").click(function(){ 
     eval($(this).find("a").attr("href")); 
     }).hover(function(){ 
     $(this).find("a").css("text-decoration", "underline"); 
     },function(){ $(this).find("a").css("text-decoration", "none"); 
     }); 

     $(".avlLst table").find("div[class^='planeImg'],input[type='radio']").click(function(){selFlight(this);}); 
     var firstRadio=null; 
     $(".avlLst table").each(function(){ 
     var $chkbs= $("input[type='radio'][name*='market'][lwst='true']:enabled:first", this); 
     if($chkbs.size() == 0){ 
     $chkbs = $("input[type='radio'][name*='market']:enabled:first", this); 
     } 
     $chkbs.each(function(){ 
     $(this).attr('checked','checked').parents('tr:first').attr('class','on'); 
     if(firstRadio==null) firstRadio=this; 
     }); 
     var filter=function(){ 
     var flnum=this.value.replace(/.*FR~\s*(\d+)~.*/, 'FR$1'); 
     var a=preselectflights.split(','); 
     for(var i=0;i<a.length;i++) if(a[i].replace(/\s/g, '')==flnum) return true; 
     return false; 
     }; 

     if(preselectflights!=''){ 
      $("input[type='radio'][name*='market']:enabled", this).filter(filter).eq(0).each(function(){ 
     $(this).attr('checked','checked'); 
     firstRadio=this; 
     }); 
     } 
     }); 
     $(firstRadio).trigger('click'); 

     displayPopUpFareRule = getFareRule; 
     displayPopUpFareRule('K','K2LOW|K|FR|BND2||en-IE','ADT'); 
     }); 
     var preselectflights=''; 

    function getFareRule(classOfService, fareRuleKeys, paxTypes){ 
     var url='FareRules.aspx?fareRuleKeys=' + fareRuleKeys +'&class=' + classOfService + '&paxTypes=' + paxTypes; 
     $('div#fareRules').load(url + ' #main h2,#main div', function() { 
     $('#main div.avlLst > table td:nth-child(3)').each(function(index, cell) { $(cell).wrapInner('<a href="#" onclick="return false;"></a>'); }); 
     $('#fareRules').jqm({overlay: 30, modal: false, onShow: showFareRules}).jqmAddTrigger('#main div.avlLst > table td:nth-child(3) *').jqmAddClose('#fareRules h2 span'); 
     }); 
    } 

    function showFareRules(hs) 
     { 
     var pos = $(hs.t).offset(); 
     var width = $(hs.t).width(); 
     $('#fareRules').css({ 'left': (pos.left + width) + 'px', 'top': pos.top + 'px' }); 
     hs.w.show(); 
     } 

    </script><div class="avlBlk"><h2>Going Out <span>From Aarhus - Malaga</span></h2><table><tr><td align="left" class="chgOff"><a id="AvailabilityInputFRSelectView_LinkButtonPreviousDay1" href="javascript:__doPostBack('AvailabilityInputFRSelectView$LinkButtonPreviousDay1','')">« Previous Day</a></td><td align="right" class="chgOn"><a id="AvailabilityInputFRSelectView_LinkButtonNextDay1" href="javascript:__doPostBack('AvailabilityInputFRSelectView$LinkButtonNextDay1','')">Next Day »</a></td></tr></table><div class="avlLst avlLst1"><p id="taxAndFeeInclusiveDivHeader1"><b>Select A Flight</b></p><div id="taxAndFeeInclusiveDivBody1" class="drilldown"><p class="hdr">Select a Flight</p></div><table><tr id="1_2011_9_2_23_05_00"><td><div class="planeImg1" title="Click to select this fare on this flight"></div></td><td><input id="AvailabilityInputFRSelectView_RadioButtonMkt1Fare1" type="radio" name="AvailabilityInputFRSelectView$market1" value="K~K2LOW~BND2~~RoundFrom|FR~2523~ ~~AAR~10/02/2011 19:30~AGP~10/02/2011 23:05" onclick="return raise('SelectFare', new SelectFareEventArgs(1, 1, 'K'))" required="true" requiredError="Please select a flight and fare in every market." checked lwst="true"></td><td>Regular Fare</td><td>Adult<br></td><td align="right" style="font-size:110%;">449.00 DKK<br></td><td></td><td><b>Sun</b>2 Oct 11<br><b>Flight</b>FR 2523</td><td>19:30 Depart<br>23:05 Arrive</td></tr></table><div style="clear:both; width: 100%; text-align: center;"><a href="javascript:infoWin('trvfee',0,0,'EN')">Fares do not include optional fees/charges. For a full list of Ryanair fees, please click here</a></div><div class="clr"></div></div></div><div class="avlBlk"><h2>Coming Back <span>From Malaga - Aarhus</span></h2><table><tr><td align="left" class="chgOff"><a id="AvailabilityInputFRSelectView_LinkButtonPreviousDay2" href="javascript:__doPostBack('AvailabilityInputFRSelectView$LinkButtonPreviousDay2','')">« Previous Day</a></td><td align="right" class="chgOn"><a id="AvailabilityInputFRSelectView_LinkButtonNextDay2" href="javascript:__doPostBack('AvailabilityInputFRSelectView$LinkButtonNextDay2','')">Next Day »</a></td></tr></table><div class="avlLst avlLst1"><p id="taxAndFeeInclusiveDivHeader2"><b>Select A Flight</b></p><div id="taxAndFeeInclusiveDivBody2" class="drilldown"><p class="hdr">Select a Flight</p></div><table><tr id="2_2011_9_5_15_50_00"><td><div class="planeImg2" title="Click to select this fare on this flight"></div></td><td><input id="AvailabilityInputFRSelectView_RadioButtonMkt2Fare1" type="radio" name="AvailabilityInputFRSelectView$market2" value="C~C2LOW~BND2~~RoundFrom|FR~2522~ ~~AGP~10/05/2011 15:50~AAR~10/05/2011 19:30" onclick="return raise('SelectFare', new SelectFareEventArgs(2, 1, 'C'))" required="true" requiredError="Please select a flight and fare in every market." checked lwst="true"></td><td>No Taxes</td><td>Adult<br></td><td align="right" style="font-size:110%;">379.00 DKK<br></td><td></td><td><b>Wed</b>5 Oct 11<br><b>Flight</b>FR 2522</td><td>15:50 Depart<br>19:30 Arrive</td></tr></table><div style="clear:both; width: 100%; text-align: center;"><a href="javascript:infoWin('trvfee',0,0,'EN')">Fares do not include optional fees/charges. For a full list of Ryanair fees, please click here</a></div><div class="clr"></div></div></div><div class="section right" style="width:38%;padding:4px;"><div class="bld" style="font-size:16px;margin-bottom: 4px;"><p style="float:left;"><big>Total</big></p><p class="rght"><big id="totalPrice">Please Wait...</big></p></div><p><small>Optional charges such as administration and checked baggage fees are not included.<br><a href="javascript:infoWin('trvfee',0,0,'EN');">Click here for details</a></small></p></div><div style="display: none; border: 1px solid black; position: absolute; background-color: white; width: 33%; padding: 0 5px 5px 5px;" id="fareRules"></div><div class="btnRight"><input class="buttonRight" onClick="return validate(this) &amp;&amp; checkTimes() &amp;&amp; preventDoubleClick();" type="submit" name="AvailabilityInputFRSelectView$ButtonSubmit" value="Select and Continue" id="AvailabilityInputFRSelectView_ButtonSubmit"><button id="NewSrch" class="button" onclick="&#xA;     window.location='FRSearch.aspx';&#xA;    &#xA;   return false;&#xA;  ">New Search</button><style type="text/css"> 
     .ad_header {color:#191970;font-weight:bold;font-size:11px} 

       .ad_line1 {color:#0000FF;font-size:13px; text-decoration:underline} 
       .ad_url {color:#008000;margin-bottom:12px; text-decoration:none} 

     .ad_text {color:#191970;text-decoration:none} 
     .wide_ads {padding:5px;} 
     div.ads ul {margin: 0px; list-style: none;} 
     .narrow_ads {padding:2px;position: absolute; top: 100px; left: 780px; width:200px;} 
    </style><div id="wide_ad_unit" class="ads wide_ads"></div><div id="narrow_ad_unit" class="ads narrow_ads"></div><script type="text/javascript" charset="utf-8"> 

     var channels = {'DE':'1901616133','ES':'1730142402','FR':'4307283847','GB':'3975277388','IE':'0091594208','IT':'9330300293','NL':'6066899700','PL':'0911139945','SE':'1735271438','Other':'1974134150'};   
     var channelid= channels['IE'];   
     if (channelid == null) channelid='1974134150';  

    var pageOptions = { 
     'pubId' : 'pub-3031568651010206', 
     'query' : 'Malaga Flight', 
     'channel' : channelid, 
     'linkTarget' : '_blank', 
     'siteLinks' : true, 
     'sellerRatings' : true 
     }; 

    var adblock = { 
    'container' : 'narrow_ad_unit', 
     'number' : 8, 
    'width' : '250px', 
     'lines' : 3, 
    'fontFamily' : 'verdana', 
    'colorText' : '#191970', 
     'fontSizeTitle' : '13px', 
    'fontSizeDescription' : '11px', 
    'fontSizeDomainLink' : '11px', 
    'colorBackground' : '#BFD6F7', 
     'colorDomainLink' : 'blue', 
     'colorBorder' : '#BFD6F7' 
    }; 

     var adblock2 = { 
     'container' : 'wide_ad_unit', 
     'number' : 5, 
     'width' : '400px', 
     'lines' : 3, 
     'fontFamily' : 'verdana', 
     'colorText' : '#191970', 
     'fontSizeTitle' : '13px',   
     'fontSizeDescription' : '11px', 
     'fontSizeDomainLink' : '11px', 
     'colorDomainLink' : 'blue', 
     'colorBackground' : 'white', 
     'colorBorder' : 'white' 
    }; 
     new google.ads.search.Ads(pageOptions, adblock); 

    </script><div id="YahooBottomSelectAds"></div><script type="text/javascript"> 
     $(document).ready(function(){ 
     keywordsToUse = "Malaga Flight"; 
     resultsHeader = "Sponsored Listings"; 
     currentLanguage = "en"; 
     currentCulture = "IE"; 
     destination = "Malaga"; 

     YahooAds_SetFrame(); 
     }); 
    </script></div></div></div><div class="clr"></div><div id="footer"><div id="fLinks"><a href="http://www.ryanair.com" title="Home">Home</a> | <a href="http://www.ryanair.com/site/EN/faqs.php" title="F.A.Q." target="_blank">F.A.Q.</a> | <a href="http://www.ryanair.com/site/EN/conditions.php?view=privacy" title="Privacy Policy" target="_blank">Privacy Policy</a> | <a href="http://www.ryanair.com/site/EN/conditions.php" title="General Terms &amp; Conditions of Carriage" target="_blank">General Terms &amp; Conditions of Carriage</a> | <a href="http://www.ryanair.com/en/terms-and-conditions/copywrite" title="Terms of Use" target="_blank">Terms of Use</a> | <a href="http://www.ryanair.com/site/EN/faqs.php?sect=CONTACT&amp;div=int_sup" title="Contact Us" target="_blank">Contact Us</a> | <a href="javascript:infoWin('trvfee',0,0,'EN');" title="Fees">Fees</a></div><div id="copyr">Copyright 2009 Ryanair Ltd.</div><input type="hidden" id="language" value=""><input type="hidden" id="culture" value=""><script type="text/javascript"> xtnv=document; xtsd=(window.location.protocol.indexOf('https:')==0?'https://logs152':'http://logc158'); xtsite=(window.location.hostname.indexOf('www.bookryanair.com')!=-1)?'384235':'385193'; xtn2="3"; xtpage="BookingProcess_IE::Select"; xtdi="1"; xt_multc="&x1=2&x2=20111002&x3=20111005&x4=AAR&x5=AGP&x6=1&x7=3"; if(window.xtparam!=null) window.xtparam+=xt_multc; else window.xtparam=xt_multc; </script><script type="text/javascript" src="js/Ryanair/xtcore.js"></script><noscript><img width="1" height="1" alt="" src="http://logc158.xiti.com/hit.xiti?s=384235&amp;s2=3&amp;p=BookingProcess_IE::Select&amp;di=1"></noscript></div></div></div><div class="clr"></div><script type="text/javascript"> 
// 
var theForm = document.forms['SkySales']; 
if (!theForm) { 
    theForm = document.SkySales; 
} 
function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
} 
// 
</script><script language="javascript" type="text/javascript"><!-- 
        var events = new Array(); 

        function register(eventName, functionName) 
        { 
         if (eval(events[eventName]) == null) 
         { 
          events[eventName] = new Array(); 
         } 
         events[eventName][events[eventName].length] = functionName; 
        } 

        function raise(eventName, eventArgs) 
        { 
         var undefined; 

         if (events[eventName] != undefined) 
         { 
          for (var ix=0; ix<events[eventName].length; ix++) 
          { 
           if (eval(events[eventName][ix] + "(eventArgs)") == false) 
           { 
            return false; 
           } 
          } 
         } 

         return true; 
        } 
       // --></script><script language="javascript" type="text/javascript"><!-- 
        function SelectFareEventArgs(marketIndex, fltIndex, classOfService) 
        { 
         this.paxFares = marketPaxFares['mkt'+marketIndex+'|flt'+fltIndex+'|'+classOfService]; 
         this.marketIndex = marketIndex; 
        } 
       // --></script><script language="javascript" type="text/javascript"><!-- 
       function AvailabilityInputFRSelectView_Validate(eventArgs) 
       { 

        var dots; 
        var sel; 
        var numOfMkts = 2; 
        var msg = new Array (
       "", "", 

        0); 

        for (var i = 1; i <= numOfMkts; i++) 
        { 
         sel = ''; 
         dots = document['SkySales']["AvailabilityInputFRSelectView$market" + i]; 

         if (dots == null) 
         { 
          alert(""); 
          return false; 
         } 
         else if (dots[0]) // array 
         { 
          for (var j = 0; j < dots.length; j++) 
          { 
           if (dots[j].checked) 
           { 
            sel = dots[j].value; 
            break; 
           } 
          } 
         } 
         else // single 
         { 
          if (dots.checked) 
          { 
           sel = dots.value; 
          } 
         } 

         if (sel == '') 
         { 
          alert(msg[i-1]); 
          return false; 
         } 
        } 

        return true; 
       } 


       function displayPopUpFareRule(classOfService, fareRuleKeys, paxTypes) 
       { 
        var url = '/skysales/FareRules.aspx?fareRuleKeys=' + fareRuleKeys +'&class=' + classOfService + '&paxTypes=' + paxTypes; 

        if (!window.fareRuleWindow || fareRuleWindow.closed) // has not yet been defined 
        { 
         fareRuleWindow = window.open(url,'fareRule','width=250,height=251,toolbar=0,status=0,location=0,menubar=0,scrollbars=1,resizable=0'); 
        } 
        else 
        { 
         fareRuleWindow.open(url,'fareRule','width=250,height=251,toolbar=0,status=0,location=0,menubar=0,scrollbars=1,resizable=0'); 
         fareRuleWindow.focus(); 
        } 
       } 

       // --></script><script language="javascript" type="text/javascript"><!-- 
            function paxFare(paxTypeDesc,classDesc,fareRuleKey) 
            { 
             this.paxTypeDesc = paxTypeDesc; 
             this.classDesc = classDesc; 
             this.fareRuleKey = fareRuleKey; 
            } 
            var marketPaxFares = new Array(); 

        marketPaxFares['mkt1|flt1|K'] = new Array(); 

          marketPaxFares['mkt1|flt1|K'][0] = new paxFare('Adult','Regular Fare','K2LOW|K|FR|BND2||en-IE'); 

        marketPaxFares['mkt2|flt1|C'] = new Array(); 

          marketPaxFares['mkt2|flt1|C'][0] = new paxFare('Adult','No Taxes','C2LOW|C|FR|BND2||en-IE'); 

       // --></script><script language="javascript" type="text/javascript"><!-- 
            function AvailabilityInputFRSelectView_initialize() 
            { 

            } // end of Availability_initialize 

       // --></script><script type="text/javascript"> 
// 
var RegisterFunctionsWithEvents = new Array(register('Validate', 'AvailabilityInputFRSelectView_Validate'), register('WindowLoad', 'AvailabilityInputFRSelectView_initialize')); 
// 
</script></form><script language="javascript" type="text/javascript" xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:usr="urn:the-xml-files:xslt"> 
      //defined in common.js 
      $(document).ready(function(){ 
       WindowInitialize(); 
      }); 
    </script></body></html> 
+1

http://stackoverflow.com/questions/how-to-ask – Krishnabhadra

回答

3

此代碼將通過你的HTML或目的地,負載爲一個字符串分析,並與下面componentsSeparatedByString然後實際上會發現在你的HTML代碼的文物,並返回無論是這兩個段之間。你可以建立這個!

NSString *request = [NSString stringWithFormat:@"http://www.url.com/test.htm"]; 

NSString *escapedUrl = [request 
         stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

NSURL *URL = [NSURL URLWithString:escapedUrl]; 

NSError *error; 
NSString *HTML = [NSString stringWithContentsOfURL:URL encoding:NSASCIIStringEncoding error:&error]; 

NSString *question = [[[[HTML componentsSeparatedByString:@"html tags to find"] objectAtIndex:1] componentsSeparatedByString:@"end of html to find"] objectAtIndex:0]; 
+0

我必須承擔使用本就像THpple.h或者它的一些額外的文件沒有重要到需要請指導我如何在 – Rocky

0

檢查此鏈接:How to use NSXMLParser to parse parent-child elements that have the same name它描述了一個簡單的例子,拆解,並可以做更復雜。

+0

維塔利著作中,我的HTML文件不是XML文件 – Rocky

+0

HTML是XML文件的一個亞種,只選擇那些你需要的標籤,並分析其在以下功能: - (無效)解析器: (的NSXMLParser *)解析器didStartElement:(的NSString *)的ElementName 的namespaceURI:(的NSString *)的namespaceURI 的qualifiedName:(的NSString *)QNAME 屬性:(的NSDictionary *)attributeDict; (NSString *)qName;(NSString *)namespaceURI - (void)解析器: - (無效)解析器:(的NSXMLParser *)解析器foundCharacters:(的NSString *)串;我一直在爲RSS新聞閱讀器這樣做 – Vitaliy

0

我已經成功地使用Nolan Waite's HTMLReader項目,以容易和可靠地分析一個非常複雜的HTML5響應。

這很容易安裝和使用,我強烈推薦它。

下面是自述的例子:

#import <HTMLReader/HTMLReader.h> 

// Parse a string and find an element. 
NSString *markup = @"<p><b>Ahoy there sailor!</b></p>"; 
HTMLDocument *document = [HTMLDocument documentWithString:markup]; 
NSLog(@"%@", [document firstNodeMatchingSelector:@"b"].textContent); 
// => Ahoy there sailor! 

// Wrap one element in another. 
HTMLElement *b = [document firstNodeMatchingSelector:@"b"]; 
NSMutableOrderedSet *children = [b.parentNode mutableChildren]; 
HTMLElement *wrapper = [[HTMLElement alloc] initWithTagName:@"div" 
               attributes:@{@"class": @"special"}]; 
[children insertObject:wrapper atIndex:[children indexOfObject:b]]; 
b.parentNode = wrapper; 
NSLog(@"%@", [document.rootElement serializedFragment]); 
// => <html><head></head><body><p><div class="special"> \ 
<b>Ahoy there sailor!</b></div></p></body></html> 

// Load a web page. 
NSURL *URL = [NSURL URLWithString:@"https://github.com/nolanw/HTMLReader"]; 
NSURLSession *session = [NSURLSession sharedSession]; 
[[session dataTaskWithURL:URL completionHandler: 
    ^(NSData *data, NSURLResponse *response, NSError *error) { 
     NSString *contentType = nil; 
     if ([response isKindOfClass:[NSHTTPURLResponse class]]) { 
      NSDictionary *headers = [(NSHTTPURLResponse *)response allHeaderFields]; 
      contentType = headers[@"Content-Type"]; 
     } 
     HTMLDocument *home = [HTMLDocument documentWithData:data 
             contentTypeHeader:contentType]; 
     HTMLElement *div = [home firstNodeMatchingSelector:@".repository-description"]; 
     NSCharacterSet *whitespace = [NSCharacterSet whitespaceAndNewlineCharacterSet]; 
     NSLog(@"%@", [div.textContent stringByTrimmingCharactersInSet:whitespace]); 
     // => A WHATWG-compliant HTML parser in Objective-C. 
    }] resume];