Marry: Werte auslesen von html seite

Hallo,

Leider komme ich nicht weiter, aber vielleicht kann mir einer weiterhelfen.
Da ich noch nicht so viel Einblick habe, werf ich die Frage in den Raum, wie man Werte von einer HTML-Seite auslesen kann, (ohne auf eine Datenbank zuzugreifen).
Diese Werte sollen später in einer SVG-Grafik umgesetzt werden.

Die SVG Grafik steht. Hab diese in Java implementiert um diese mit Java dynamisch zu erzeugen.

Danke schon mal im Voraus.

Grüße
Marry

  1. Hi!

    Da ich noch nicht so viel Einblick habe, werf ich die Frage in den Raum, wie man Werte von einer HTML-Seite auslesen kann, (ohne auf eine Datenbank zuzugreifen).

    Was sind denn das für "Werte" und wo stehen die in der HTML-Seite?

    Diese Werte sollen später in einer SVG-Grafik umgesetzt werden.

    Was heißt "später"? Auf dem Server?

    Die SVG Grafik steht. Hab diese in Java implementiert um diese mit Java dynamisch zu erzeugen.

    Java oder Javascript? Woher nimmst Du denn im Augenblick die Werte hierfür?

    Grüße
    Andreas

    1. Hi

      Was sind denn das für "Werte" und wo stehen die in der HTML-Seite?

      Laborwerte. Diese stehen in einer Tabelle. Oben steht das Datum des eingetragenen Wertes, links in der Tabelle der Name. Mehr nicht.
      Meine Aufgabe ist es diese grafisch umzusetzen.
      Das heisst auf der Seite wo die Tabelle steht, sollen zu jeweiligen Wert Buttons hinzugefügt werden. Wenn man darauf klickt sollen die Werte des entsprechenden Datums grafisch angezeigt werden. (in SVG).

      Diese Werte sollen später in einer SVG-Grafik umgesetzt werden.
      Was heißt "später"? Auf dem Server?

      Ja genau.

      Die SVG Grafik steht. Hab diese in Java implementiert um diese mit Java dynamisch zu erzeugen.
      Java oder Javascript? Woher nimmst Du denn im Augenblick die Werte hierfür?

      Die Grafik ist in Java implementiert. Zum testen habe ich irgendwelche Werte direkt mit ner StringBuffer x-Methode übergeben. Diese werden dann mit nem Methodenaufruf, der im Servlet steht, aufgerufen.

      Katrin

      1. Hallo,

        Was sind denn das für "Werte" und wo stehen die in der HTML-Seite?

        Laborwerte. Diese stehen in einer Tabelle. Oben steht das Datum des eingetragenen Wertes, links in der Tabelle der Name. Mehr nicht.

        Hm:

        2003-11-17
        Paul Müller     12.56
        Kurt Maier       8.99
        ...
        2003-11-18
        Paul Müller      9.16
        Kurt Maier      28.89
        ...

        So?

        Meine Aufgabe ist es diese grafisch umzusetzen.
        Das heisst auf der Seite wo die Tabelle steht, sollen zu jeweiligen Wert Buttons hinzugefügt werden. Wenn man darauf klickt sollen die Werte des entsprechenden Datums grafisch angezeigt werden. (in SVG).

        Diese Werte sollen später in einer SVG-Grafik umgesetzt werden.
        Was heißt "später"? Auf dem Server?
        Ja genau.

        Die SVG Grafik steht. Hab diese in Java implementiert um diese mit Java dynamisch zu erzeugen.
        Java oder Javascript? Woher nimmst Du denn im Augenblick die Werte hierfür?

        Die Grafik ist in Java implementiert. Zum testen habe ich irgendwelche Werte direkt mit ner StringBuffer x-Methode übergeben. Diese werden dann mit nem Methodenaufruf, der im Servlet steht, aufgerufen.

        So richtig habe ich das zwar immer noch nicht verstanden, aber es läuft wohl darauf hinaus, dass Du eine HTML-Tabelle auslesen willst. Das geht mit:
        javax.swing.text.html.HTMLDocument
        http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/text/html/HTMLDocument.html
        und
        javax.swing.text.html.HTMLEditorKit
        http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/text/html/HTMLEditorKit.html

        Beispiele:
        http://javaalmanac.com/egs/javax.swing.text.html/GetText.html?l=rel
        http://javaalmanac.com/egs/javax.swing.text.html/GetLinks.html?l=rel

        Hier ein vom GetText-Beispiel leicht abgewandeltes Beispiel zum parsen von Tabellen:

        import java.io.*;
        import java.net.*;
        import javax.swing.text.*;
        import javax.swing.text.html.*;

        public class parseHTMLTabellen {

        // This method takes a URI which can be either a filename (e.g. file://c:/dir/file.html)
            // or a URL (e.g. http://host.com/page.html) and returns all text in the document.
            public static String getTabellenText(String uriStr) {
                final StringBuffer buf = new StringBuffer(1000);

        try {
                    // Create an HTML document that appends all text to buf
                    HTMLDocument doc = new HTMLDocument() {
                        public HTMLEditorKit.ParserCallback getReader(int pos) {
                            return new HTMLEditorKit.ParserCallback() {
                                HTML.Tag tg = null;

        public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) {
                                    tg = t;
                                    if (t == HTML.Tag.TABLE) buf.append("Neue Tabelle\n");
                                }

        public void handleEndTag(HTML.Tag t, int pos) {
                                    if (t == HTML.Tag.TR || t == HTML.Tag.TH) buf.append("\n");
                                    if (t == HTML.Tag.TD) buf.append("\t");
                                }

        // This method is whenever text is encountered in the HTML file
                                public void handleText(char[] data, int pos) {
                                    if (tg == HTML.Tag.TD) buf.append(data);
                                }
                            };
                        }
                    };

        // Create a reader on the HTML content
                    URL url = new URL(uriStr);
                    URLConnection conn = url.openConnection();
                    Reader rd = new InputStreamReader(conn.getInputStream());

        // Parse the HTML
                    EditorKit kit = new HTMLEditorKit();
                    kit.read(rd, doc, 0);
                } catch (MalformedURLException e) { System.out.println(e);
                } catch (BadLocationException e) { System.out.println(e);
                } catch (IOException e) { System.out.println(e);
                }

        // Return the text
                return buf.toString();
            }

        public static void main(String[] args) {
            String s = getTabellenText("file:///d:/www/test66.html");
            System.out.println(s);
          }
        }

        Du kannst natürlich auch vom GetLinks-Beispiel ausgehen und daraus ein GetTables-Beispiel machen, indem Du mehrere Iteratoren
        HTMLDocument.Iterator it_tbl = doc.getIterator(HTML.Tag.TABLE);
        HTMLDocument.Iterator it_tr = doc.getIterator(HTML.Tag.TR);
        HTMLDocument.Iterator it_td = doc.getIterator(HTML.Tag.TD);
        verschachtelst.

        viele Grüße

        Axel

  2. Hi,

    Da ich noch nicht so viel Einblick habe, werf ich die Frage in den Raum, wie man Werte von einer HTML-Seite auslesen kann, (ohne auf eine Datenbank zuzugreifen).

    Mit JavaScript natürlich (der Hauptgrund, warum die Sprache so heißt 8-)). Es ist, neben z.B. "DHTML-Schnickschnack", explizit als Schnittstelle Java<->HTML gedacht.

    Wenn Du die Werte in (Hidden-)Forms hast, kannst Du sie immer auslesen (form.value), bei Werten im "HTML-Text" brauchst Du einen neueren DHTML-fähigen Browser (getElementById.innerHTML).

    Für Beispiele (inkl. Übergabe an Java) s. selfHTML. Allerdings steht dort "innerHTML" nur mit IE-Syntax drin, aber obige Syntax funktioniert auch mit anderen Browsern.

    Gruß, Cybaer