Autore Topic: problema split  (Letto 465 volte)

Offline TheMonk

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
  • Sistema operativo:
    Windows 7
problema split
« il: 17 Luglio 2012, 16:49:37 CEST »
0
Salve, sto facendo un parsing di una tabella dal web, devo estrarre tutti i dati contenuti in suddetta tabella. Ho usato delle regex per pulire e prendere questi dati. Il problema sorge quando stampo, nel senso che oltre a prendermi e stamparmi le stringhe con i dati mi stampa anche stringhe vuote che prima contenevano l html che ho pulito; questo è il codice:
Codice (Java): [Seleziona]
class MyJavaScriptInterface  
                {
                        //questo metodo utilizza come parametro il contenuto della url (l'html) in formato stringa
                        public void processHTML(String html)  
                       
                        {  

                               

                                //Qua scrivo la regex per fare la ricerca di testo
                                String myPattern = "title=\"[A-Z]{2,15}";
                                //Questo dovrebbe significare che la regex viene applicata su tutto l'html (String HTML)
                                Pattern p = Pattern.compile(myPattern);
                                //il matcher è il risultato finale della regex, convertire questo in stringa
                                Matcher compagnia = p.matcher(html);
                                String mStringa= compagnia.toString();
                                //regex volo
                                String bi = "(?ms)<td class=\"align-left col-2.*?> (.*?)</td>";
                                Pattern o = Pattern.compile(bi);
                                Matcher volo = o.matcher(html);
                                //regex arrivo
                                String ar = "(?ms)<td class=\"align-left col-3.*?> (.*?)</td>";
                                Pattern q = Pattern.compile(ar);
                                Matcher arrivo = q.matcher(html);
                                //regex orario
                                String or = "(?ms)<td class=\"align-left col-4.*?> (.*?)</td>";
                                Pattern r = Pattern.compile(or);
                                Matcher orario = r.matcher(html);
                                //regex orario effettivo
                                String oref = "(?ms)<td class=\"align-left col-6.*?> (.*?)</td>";
                                Pattern t = Pattern.compile(oref);
                                Matcher orario2 = t.matcher(html);
                                //regex stato
                                String st =  "(?ms)<td class=\"align-left col-8.*?> (.*?)</td>";
                                Pattern v = Pattern.compile(st);
                                Matcher stato = v.matcher(html);

                                List<String> listaCompagnia = new ArrayList<String>();
                                List<String> listaVolo = new ArrayList<String>();
                                List<String> listaArrivo = new ArrayList<String>();
                                List<String> listaOrario = new ArrayList<String>();
                                List<String> listaOrario2 = new ArrayList<String>();
                                List<String> listaStato = new ArrayList<String>();




                               
                                Pattern pu = Pattern.compile("title=\"[A-Z]{2,15}");

                                while (compagnia.find()) {
                                        Matcher mi = pu.matcher(compagnia.group());
                                        String ca = compagnia.group();

                                        String[] splitCompagnia = ca.split("\"");
                                        Log.d("tag", ""+splitCompagnia[1]);
                                        listaCompagnia.add(ca);
                                       
                                }  

                                Pattern pi = Pattern.compile("(?<=^|>)[^><]+?(?=<|$)");

                               

                                while (volo.find()) {
                                        Matcher mi = pi.matcher(volo.group());
                                        String cv = volo.group(1);
                                        String[] splitVolo = cv.split(">");
                                        String splitV = splitVolo[2].split("<")[0];
                                        listaVolo.add(splitV);
                                        Log.d("tag", ""+splitV);
                                       
                                       
                                }


                                while (arrivo.find()) {

                                        Matcher mi = pi.matcher(arrivo.group());
                                        String cb = arrivo.group();
                                        String[] splitArrivo = cb.split(">");
                                        String splitA = splitArrivo[1].split("<")[0];
                                        listaArrivo.add(splitA);
                                        Log.d("tag", splitA);
                                               

                                }

                                while (orario.find()) {

                                        Matcher mi = pi.matcher(orario.group());
                                        String cb = orario.group();
                                       
                                        String [] splitOrario = cb.split(">");
                                        String splitO = splitOrario[1].split("<")[0];
                                        listaOrario.add(splitO);
                                        String stringaVuota= " ";
                                         
                                                Log.d("tag",""+splitO);
                                               
                                }
                                while (orario2.find()) {

                                        Matcher mi = pi.matcher(orario2.group());
                                        String cb = orario2.group();
                                        String[] splitOrario2 = cb.split(">");
                                        String splitO2 = splitOrario2[1].split("<")[0];
                                        listaOrario2.add(splitO2);
                                       
                                                Log.d("tag",""+splitO2);
                                               

                                }
                                while (stato.find()) {

                                        Matcher mi = pi.matcher(stato.group());
                                        String cb = stato.group();
                                        String splitStato[] = cb.split(">");
                                        String splitS = splitStato[1].split("<")[0];
                                        listaStato.add(splitS);
                                       
                                                Log.d("tag",""+splitS);
                                               
                                }

                               

                        }

                }


                webview = (WebView) findViewById(R.id.webview);
                webview.getSettings().setJavaScriptEnabled(true);
                webview.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");
                webview.setWebViewClient(new WebViewClient() {
                        @Override
                        public void onPageFinished(WebView view, String url)
                        {
                                /* This call inject JavaScript into the page which just finished loading. */

                                webview.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
                        }
                });


                webview.loadUrl("[url=http://www.adr.it/pax-cia-voli-in-tempo-reale?p_p_id=3_WAR_realtimeflightsportlet&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-2&p_p_col_pos=1&p_p_col_count=2&_3_WAR_realtimeflightsportlet_tab=arrival&_3_WAR_realtimeflightsportlet_keywords=&_3_WAR_realtimeflightsportlet_advancedSearch=false&_3_WAR_realtimeflightsportlet_andOperator=true&_3_WAR_realtimeflightsportlet_airport=&_3_WAR_realtimeflightsportlet_carrier=&_3_WAR_realtimeflightsportlet_codNat=&_3_WAR_realtimeflightsportlet_codScaOpe=CIA&_3_WAR_realtimeflightsportlet_codVet=&_3_WAR_realtimeflightsportlet_date=2012-07-17&_3_WAR_realtimeflightsportlet_dataNumVol=&_3_WAR_realtimeflightsportlet_numVol=&_3_WAR_realtimeflightsportlet_rouIata=&_3_WAR_realtimeflightsportlet_orario=00%3a00-24%3a00&_3_WAR_realtimeflightsportlet_searchType=standard&_3_WAR_realtimeflightsportlet_orderByCol=comparationTime&_3_WAR_realtimeflightsportlet_orderByType=asc&_3_WAR_realtimeflightsportlet_delta=75"]Voli in Tempo Reale - Aeroporto di Ciampino - Adr.it - Aeroporti di Roma[/url]);
        }
}

e questo è il log:

07-17 14:48:33.953: D/tag(548):  BRINDISI (BDS)
07-17 14:48:33.953: D/tag(548):             

Come vedete prende anche stringhe vuote... come posso risolvere?