# Quelltext aus einem HTMLDocument auslesen



## chriss_2oo4 (11. April 2008)

Hi,

wie kann ich den gesamten Quelltext aus einem HTMLDocument auslesen?

Lg Chriss


----------



## Thomas Darimont (11. April 2008)

Hallo,

schau mal hier:

```
/**
 * 
 */
package de.tutorials;

import java.net.URL;
import java.util.Scanner;

/**
 * @author Thomas.Darimont
 *
 */
public class PrintPageSource {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
        Scanner scanner = new Scanner(new URL("http://www.tutorials.de").openStream());
        while(scanner.hasNextLine()){
            System.out.println(scanner.nextLine());
        }
        scanner.close();
    }

}
```

Gruß Tom


----------



## chriss_2oo4 (11. April 2008)

Hi,

erstmal Danke für deine Antwort!

Leider habe ich keine persistente HTML-Datei -> Die Anwendung erzeugt nur im Speicher ein HTML-Dokument, damit im JTextPane die Text-Daten in unterschiedlichen Farben gestaltet werden können, oder ist das auch ohne HTML möglich?

Ich gestatlte ein Chat-Fenster und ich möchte - wie z. B. in ICQ - das der Name einer Person in Rot und einer Person in Blau dargestellt wird:


```
Hugo (12:15) <- Rot
Bla Bla....

Heino (12:16) <- Blau
Bla Bla...

usw.
```

Mit HTML ist es halt relativ kompliziert die Schriftart / -größe / etc. zu ändern, wenn das Dokument schon gefüllt ist.

Das weicht jetzt war etwas vom Thema ab, aber vielleicht kannst Du  / Ihr mir ja nen Tipp geben wie man das am geschicktesten löst.

Lg Chriss
Lg Chriss


----------



## zerix (11. April 2008)

Hallo,

wenn die HTML-Datei im Speicher ist, kannst du sie doch bearbeiten. Wenn sie als ByteArray vorliegt, kannst du es dem String einfach dem Konstruktor übergeben.


MFG

Sascha


----------



## chriss_2oo4 (11. April 2008)

Hi,



> wenn die HTML-Datei im Speicher ist, kannst du sie doch bearbeiten.



Leider wird die HTML-Datei nicht so angezeigt wie ich das gerne hätte, darum würde ich mal ganz gerne in den gesamten Quellcode rein schauen, damit ich sehen kann wo das Problem liegt.

Vielleicht erkennt auch jemand das Problem anhand des Quellcodes erkennen, möglicherweise verwende ich ja die falschen Methoden zum Hinzufügen von HTML:

Initialisierung (Auszug aus InitGUI()):

```
txtChat = new JTextPane();
txtChat.setContentType("text/html");
txtChat.setEditable(false);

kitChat = new HTMLEditorKit();
StyleSheet myStyleSheet = GetCurrentStyleSheet();
kitChat.setStyleSheet(myStyleSheet);

docChat = (HTMLDocument)kitChat.createDefaultDocument();
docChat.insertAfterStart(docChat.getDefaultRootElement(), "<div id=\"messages\"></div>");
txtChat.setDocument(docChat);
```

StyleSheet


```
private StyleSheet GetCurrentStyleSheet() 
{
                StyleSheet myStyle = new StyleSheet();
		myStyle.addRule(   "body { " +
				                   "font-family: " + this.strFont + "; " +
				                   "font-size:" + this.strFontSize + "pt; " +
				                   "color: " + GetColorHexCode(strColorFont) + "; " +
				                   "background-color: "  + GetColorHexCode(strColorBackground) + "; " +
				                   "text-align: left; " +
				                   "vertical-align: top; " +
				                 "}" );
		
		myStyle.addRule(  ".message{ font-weight: bold; color:" + this.GetColorHexCode(strColor) + "; }" );

	
		return myStyle;
	}
```

Methode um neue Message hinzufügen zu können

```
public void AddMessage(String a_strMessage, String a_strUsername)
	{
		String strMessage = "<p class=\"message\">" + a_strUsername
		strMessage += " (" + GetCurrentTime() + ")</p>" + a_strMessage; 
		try
		{
			docChat.insertAfterStart(docChat.getElement("messages"), strMessage);
		}
		catch(javax.swing.text.BadLocationException e1)
		{
			e1.printStackTrace();
		}
		catch(java.io.IOException e2)
		{
			e2.printStackTrace();
		}
	}
```

Lg Chriss


----------

