//****************************************************************************** //****************************************************************************** import java.io.*; // pour lire les fichiers public class HTML_Browser { public static void main(String args[]) { // verification du nombre d'arguments if (args.length != 3) { System.out.println("3 arguments svp!"); System.exit(1); } // ouverture du ficher. Le try/catch permet d'attraper // les erreurs si java ne peut pas ouvrir le fichier BufferedReader file = null; try { file = new BufferedReader(new FileReader(args[2])); } catch(IOException e) { // oups! un erreur: System.out.println("Impossible d'ouvrir le fichier" + args[2]); System.out.println(e); System.exit(1); } // lecture du fichier ligne par ligne encore une fois, nous // devons attraper les erreurs de lecture du fichier avec try/catch try { String line = ""; String texte = ""; while((line = file.readLine()) != null) { //System.out.println(line); texte += line; } //System.out.println(texte); if(!(texte.substring(0,6).equals(""))) { System.out.println("Ceci n'est pas une page HTML"); System.exit(0); } interpretation(texte); } catch(IOException e) { // oups! un erreur: System.out.println("Erreur pendant la lecture de" + args[2]); System.out.println(e); System.exit(1); } } public static void interpretation(String str) { int i = 0; int openingTag = 0; int closingTag = 0; String tagName = ""; //String tagName2 = ""; String aEnvoyer = ""; while(!(tagName.equals("/HTML"))) { if(str.charAt(i) == '<') { closingTag = str.indexOf(">",i); tagName = str.substring(i+1,closingTag); i = closingTag+1; } if(tagName.equals("TITLE")) { System.out.println("***** TITRE DE LA PAGE: *****"); openingTag = str.indexOf("<",closingTag); aEnvoyer = str.substring(i,openingTag); closingTag = str.indexOf(">",openingTag); i = closingTag+1; System.out.println(aEnvoyer); //fct align. gauche System.out.println(); } else if(tagName.equals("BODY")) { System.out.println("***** CORPS DE LA PAGE: *****"); while(!(tagName.equals("/BODY"))) { if(str.charAt(i) == '<') { closingTag = str.indexOf(">",i); tagName = str.substring(i+1,closingTag); i = closingTag+1; } else { aEnvoyer = ""; openingTag = str.indexOf("<",i); closingTag = str.indexOf(">",openingTag); tagName = str.substring(openingTag+1,closingTag); aEnvoyer = str.substring(i,openingTag); i = closingTag+1; while(!(tagName.equals("H1") || tagName.equals("P") || tagName.equals("/BODY"))) { openingTag = str.indexOf("<",i); closingTag = str.indexOf(">",openingTag); aEnvoyer += str.substring(i,openingTag); tagName = str.substring(openingTag+1,closingTag); if(tagName.equals("B")) { openingTag = str.indexOf("/B",closingTag)-1; aEnvoyer += str.substring(closingTag+1,openingTag); // closingTag = str.indexOf(">",openingTag); } if(tagName.equals("I")) { openingTag = str.indexOf("/I",closingTag)-1; aEnvoyer += str.substring(closingTag+1,openingTag); // closingTag = str.indexOf(">",openingTag); } i = closingTag+1; } System.out.println(aEnvoyer); // fct align.just. System.out.println(); } if(tagName.equals("H1")) { aEnvoyer = ""; while(!(tagName.equals("/H1"))) { openingTag = str.indexOf("<",i); closingTag = str.indexOf(">",openingTag); aEnvoyer += str.substring(i,openingTag); tagName = str.substring(openingTag+1,closingTag); if(tagName.equals("B")) { openingTag = str.indexOf("/B",closingTag)-1; aEnvoyer += str.substring(closingTag+1,openingTag); // closingTag = str.indexOf(">",openingTag); } if(tagName.equals("I")) { openingTag = str.indexOf("/I",closingTag)-1; aEnvoyer += str.substring(closingTag+1,openingTag); // closingTag = str.indexOf(">",openingTag); } i = closingTag+1; } System.out.println(aEnvoyer); // fct align.gauche System.out.println(); } if(tagName.equals("P")) { aEnvoyer = ""; while(!(tagName.equals("/P"))) { openingTag = str.indexOf("<",i); closingTag = str.indexOf(">",openingTag); aEnvoyer += str.substring(i,openingTag); tagName = str.substring(openingTag+1,closingTag); if(tagName.equals("B")) { openingTag = str.indexOf("/B",closingTag)-1; aEnvoyer += str.substring(closingTag+1,openingTag); // closingTag = str.indexOf(">",openingTag); } if(tagName.equals("I")) { openingTag = str.indexOf("/I",closingTag)-1; aEnvoyer += str.substring(closingTag+1,openingTag); // closingTag = str.indexOf(">",openingTag); } i = closingTag+1; } System.out.println(aEnvoyer); // fct align.just. System.out.println(); } } } } } }