|  |  | |
|  |  | 
| 
 | |||||||
| Programmierung Rat & Tat für Programmierer | 
|  | 
|  | Themen-Optionen | Ansicht | 
|  13.06.2006, 20:52 | #1 | 
| Hero  Registriert seit: 24.04.2003 Alter: 53 
					Beiträge: 823
				 |  HTML Fragment per SAX einlesen Hi, Ich bastle gerade an einem kleinen Programm herum, welches Daten aus einer HTML Seite ausliest und dann per GUI übersichtlich anzeigt. Da die Daten ziemlich umfangreich sind, habe ich mir gedacht, daß ich das mittels SAX in eine DOM Struktur einlese. Leider habe ich so etwas noch nicht gemacht und stehe wieder einmal an. In der ersten Phase sollen die Turnierliste von dieser Seite: http://www.volleynet.at/volleynet/in...te&show_next=1 eingelesen werden. Diese sind in einer Zeile, die mit Code: <table cellspacing="0" cellpadding="2" border="0" align="center"><tr class="tablehead"> Momentan schaut mein (Teil)Programm so aus: Code: import java.io.*;
import java.net.*;
import org.apache.html.dom.HTMLDocumentImpl;
import org.cyberneko.html.parsers.*;
import org.w3c.dom.*;
import org.w3c.dom.html.HTMLDocument;
import org.xml.sax.SAXException;
import org.cyberneko.*;
public class Calender {
	public static void main (String args[]) {
		String _calender = "";
		
		try {
			URL _url = new URL("http://www.volleynet.at/volleynet/index.php?screen=Beach/Turnier/Liste&show_next=1");
		
		
			BufferedReader _in = new BufferedReader(new InputStreamReader(_url.openStream()));
			
			String _line;
			
			while ((_line = _in.readLine()) != null) {
				if (_line.contains("tablehead")) {
					_calender = _line;
					break;
				}
			}
			_in.close();
		} catch (MalformedURLException _ex) {
			System.out.println("MalformedURLException!");
		} catch (Exception _ex) {
			System.out.println("Some other Exception");
		}
		
		if (_calender != "") {
			try {
				DOMFragmentParser _fragParser = new DOMFragmentParser();
				_fragParser.setFeature("http://cyberneko.org/features/document-fragment", true);
				HTMLDocument _document = new HTMLDocumentImpl();
				DocumentFragment _fragment = _document.createDocumentFragment();
				_fragParser.parse(_calender, _fragment);
				print(_fragment, "	");
			} catch (SAXException _ex) {
				System.out.println("SAXException while parsing: " + _ex);
			} catch (IOException _ex) {
				System.out.println("IOException while parsing: " + _ex);
			}
		}
	}
	
	public static void print(Node node, String indent) {
        System.out.println(indent+node.getClass().getName());
        Node child = node.getFirstChild();
        while (child != null) {
            print(child, indent+" ");
            child = child.getNextSibling();
        }
    }Kann mir einer helfen oder gibt es einen einfacheren Ansatz? Danke juro 
				____________________________________ Software is like sex, it\'s better when it\'s free! | 
|   |   | 
|  13.06.2006, 21:18 | #2 | 
| Inventar  Registriert seit: 13.06.2001 
					Beiträge: 1.830
				 |   Was spricht dagegen die ganze Seite mit SAX zu parsen? Generell ist es eher mühsam html mit xml mitteln zu bearbeiten, da sich die Leute meist wenig um XML standards scheren. Ich würd' probieren aus dem html mit XSLT eine valide XML Datei zu erzeugen und die dann einzulesen. jak 
				____________________________________ Join the DNRC | Godwin\'s Law (thx@stona) Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing. \"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra) | 
|   |   | 
|  21.06.2006, 22:05 | #3 | 
| Hero  Registriert seit: 24.04.2003 Alter: 53 
					Beiträge: 823
				 |   Danke für Deine Antwort. Ich habe das jetzt mal probiert und stehe leider an   Ich werfe die komplette Seite durch einen BufferedReader um zu dem HTML zu kommen, welche ich brauche und übergebe diesen String dann an den Parser. Nur leider erwartet der einen Link zum XML und nicht den XML-String, daher bekomme ich einen Fehler "no protocol". Wenn ich den gleichen String einlese, funktioniert zumindest das, wenn auch mit einem anderen Fehler (liegt an einem HTML Attribut, welches ein & enthält und das mag XML überhaupt nicht). Wie kann ich also dem Parser direkt einen XML-String zum Parsen übergeben? 
				____________________________________ Software is like sex, it\'s better when it\'s free! | 
|   |   | 
|  | 
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| 
 | 
 |