rendered paste body//******************************************************************************
//******************************************************************************
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("<HTML>")))
{
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();
}
}
}
}
}
}