Hans Heinrich F.: Live Connect

Ich habe heute zum ersten mal von Live Connect gehört (nun um ganz genau zu sein, gestern) und das Forumsarchiv ein wenig durchgesehen zu dem Thema.
Da mir Live Connect wohl offenbar der Schlüssel zu meinem Problem ist, ich aber mit Java nicht so viel am Hut habe und auch in Selfhtml nicht sehr viel zu finden ist, habe ich die bitte an euch Experten hier mir zu helfen. Es geht darum das aktuelle Dokument in einen String umzuwandeln (um danach in diesem String, bestimmte Zeichen durch andere zu ersetzen)
Folgende hilfe bekam ich bereits:
var documentUrl = new java.net.URL(window.location.href);
var source = documentUrl.getContent().toString();
Auch wenn ich nur sehr wenig von Java verstehe, so glaube ich grade noch zu verstehen, was ungefähr vor sich geht
(die aktuelle URL wird eingelesen und der Inhalt, also das HTML Dokument, in einen String verwandelt.. falls ich das richtig verstehe *g*)
Ok, aber wie gehts nun weiter?
Ich habe probiert den String zuerst per Java Script auszugeben (woaruf ich eine Seltsame Ausgabe mit der ich nichts anfangen kann, erhielt - netscape.net.URLInputStream@8008b23
danach habe ich es über die übliche Java Methode zur ausgabe eines Strings probiert (System.out.println)
woarufhin im Dokument gar nichts stand (dafür stand im Quelltext
keine einzelne Zeile von Javascrippt mehr, sondern nur mehr diese seltsame Ausgabe..)
Also, wäre nett, wenn jemand mir sagen kann, wie ich mit dem String nun umgehen kann..

Danke schon mal

  1. Hallo Hans

    Da mir Live Connect wohl offenbar der Schlüssel zu meinem Problem ist, ich aber mit Java nicht so viel am Hut habe und auch in Selfhtml nicht sehr viel zu finden ist, habe ich die bitte an euch Experten hier mir zu helfen.

    Live Wire ist nicht sehr verbreitet und wird nicht sehr haeufig eintesetzt, vielleicht kann dir deshalb auch niemand konkret helfen. Ich kann dir mal eine URL von Netscape geben, wo du Beispiele findest:

    http://developer.netscape.com/docs/examples/index.html?content=liveconnect.html

    viele Gruesse
      Stefan Muenz

    1. Hallo Hans

      Sieht fast so aus als wäre das mein Code :-).
      Naja. Hier ist ein besseres Beispiel.

      <HTML>
      <HEAD>
      <TITLE>Titel</TITLE>
      <SCRIPT>
      var source = "";
      function read()
      {
                   source = "";
      var url = new java.net.URL(window.location.href);  //window.location.href ist eine ganz normale JS-Methode um an die URL zu kommen. Der Rest macht ein neues URL Objekt.
      var stream = new java.io.DataInputStream(url.openStream()); //Hier wird die Datei geöffnet.
      var line    = "";
      while ((line = stream.readLine()) != null) //Hier wird gelesen bis es ncihts mehr gibt.
      {
        source += line + "\n";
      }
      stream.close(); //Hier wird die Datei geschlossen.
      alert(source);
      }
      </SCRIPT>
      </HEAD>
      <BODY>
      <A href="javascript:read()">read</A><BR>
      bla bla bla
      </BODY>
      </HTML>

      Tschüs

      Daniel

      1. Hallo Hans

        Sieht fast so aus als wäre das mein Code :-).
        Naja. Hier ist ein besseres Beispiel.

        <HTML>
        <HEAD>
        <TITLE>Titel</TITLE>
        <SCRIPT>
        var source = "";
        function read()
        {
                     source = "";

        »»  var url = new java.net.URL(window.location.href);  //window.location.href ist eine ganz normale JS-Methode um an die URL zu kommen. Der Rest macht ein neues URL Objekt.
        »»  var stream = new java.io.DataInputStream(url.openStream()); //Hier wird die Datei geöffnet.
        »»  var line    = "";
        »»  while ((line = stream.readLine()) != null) //Hier wird gelesen bis es ncihts mehr gibt.
        »»  {

        source += line + "\n";

        »»  }
        »»  stream.close(); //Hier wird die Datei geschlossen.
        »»  alert(source);

        }
        </SCRIPT>
        </HEAD>
        <BODY>
        <A href="javascript:read()">read</A><BR>
        bla bla bla
        </BODY>
        </HTML>

        Tschüs

        Daniel

        Wo hast du denn Java gelernt? Würd mich echt interessiere. Ich kann bis jetzt nur mit JS umgehen, aber Java wollt ich früher schon mal lernen, allerdings war die Literatur die ich mir dazu besorgt habe nicht die idealste.
        Jedenfalls muss ich dir danken!
        Das is genauso wie ich mir das vorgestellt habe und das mit dem source.replace funktioniert auch. NUR: ich habe nochwas (sorry wenn ich lästig bin.. das ist aber jetzt auch schon das letzte, danach kann ich selbst mit java Script das Ding für meine Anforderungen weitermachen.
        Also es geht darum dass es nicht den ganzen Quelltext einlesen soll, sondern
        erst ab
        dem HTML Tag &lttable width=500 border=0 cellspacing=0 cellpadding=0>.
        Wäre das noch irgendwie möglich? Wäre die SEHR dankbar :-)

        Someone

        1. Hallo Someone,

          Nur neben bei ich heiße nicht Hans sondern Daniel.
          Zum Thema:
          Wo ich Java gelernt habe?
          Bei Sun gibt es ein gutes allerdings englisches Tutorial:
          http://java.sun.com/docs/books/tutorial/

          Wie man die Tabelle Rausfiltern kann, ist ein bischen schwierig.
          Aber ich werd mir was einfallen lasse.

          Tschüs

          Daniel

          1. Hallo Someone,

            Erst mal sorry an all für das Doppelposting. Ich hab ausversehen das falsche Fenster neu geladen.
            Zum Thema.
            Ich habe eine Lösung gefunden. Die ist aber eigendlich ziemlich gepfuscht.
            Im Prinzip sollte man das HTML-Dokument parsen. Das ist aber nicht ganz einfach und mit JavaScript auch
            recht langsam.
            Hier ist ein Beispiel:

            <HTML>
            <HEAD>
            <TITLE>Titel</TITLE>
            <SCRIPT>
            var source = "";
            function read()
            {
            source = "";
            var url = new java.net.URL(window.location.href);
            var stream = new java.io.DataInputStream(url.openStream());
            var line    = "";
            while ((line = stream.readLine()) != null)
            {
              source += line + "\n";
            }
            stream.close();
            var start = source.search(/<!--"START12345-->/) + 19;
            var ende = source.search(/<!--"ENDE12345-->/);
            alert(source.substring(start,ende));
            }
            </SCRIPT>
            </HEAD>
            <BODY>
            <A href="javascript:read()">read</A><BR>
            <!--"START12345-->
            <TABLE><TR><TD>
            bla bla bla
            </TD></TR></TABLE>
            <!--"ENDE12345-->
            </BODY>
            </HTML>

            Ich verwende im code einfach zwei eindeutige Kommentare, deren Position ich bestimme und
            dann den Code dazwischen ausgebe.
            Nicht schön, aber tut.

            Tschüs

            Daniel

        2. Hallo Someone,

          Nur neben bei ich heiße nicht Hans sondern Daniel.
          Zum Thema:
          Wo ich Java gelernt habe?
          Bei Sun gibt es ein gutes allerdings englisches Tutorial:
          http://java.sun.com/docs/books/tutorial/

          Wie man die Tabelle Rausfiltern kann, ist ein bischen schwierig.
          Aber ich werd mir was einfallen lasse.

          Tschüs

          Daniel

          1. Hallo Someone,

            Nur neben bei ich heiße nicht Hans sondern Daniel.
            Zum Thema:
            Wo ich Java gelernt habe?
            Bei Sun gibt es ein gutes allerdings englisches Tutorial:
            http://java.sun.com/docs/books/tutorial/

            Wie man die Tabelle Rausfiltern kann, ist ein bischen schwierig.
            Aber ich werd mir was einfallen lasse.

            Tschüs

            Daniel

            Hab ich nich gesagt dass du Hans heißt, das "Hallo Hans" stammt von einem deiner Beiträge *g*
            Aber du hast mich falsch verstanden, ich will nicht die Tabelle rausfiltern, sondern erst ab der Tabelle anfangen den Quellcode einzulesen.
            Mittlerweile habe ich das selbst gelöst und zwar so:
            while ((das = stream.readLine()) != "<table width=500 border=0 cellspacing=0 cellpadding=0>");
            while ((line = stream.readLine()) != null)
            ..
            Das geht so, jetzt wird der Code erst ab der Tabelle eingelesen
            und mit source.replace
            kann ich nun Zeichen im Code ersetzen.
            Aber irgendwie gibt es da ein Problem das ich selbst nicht ganz verstehe:
            wenn ich es mit window.alert in einem alert-Fenster ausgeb wird es da angezeigt.. mit document.write wird aber gar nichts geschrieben.
            Kannst du mir erklären warum? Und wie ich das hinkrieg?

            1. Hallo Someone,

              Mal ganz nebenbei. Zitiere nicht immer alles sondern nur das was du brauchst.
              Zum Thema.
              Das Problem ist warscheinlich, das du HTML-code ausgibst der interpretiert wird und da du erst mit
              der Tabelle anfängst auch noch falsch.
              Du must also alle Markup-Zeichen schützen.
              Ich habe dazu die escape-funktion verwendet.
              Das Problem dabei ist, das die geschützten Zeichen (#5C) auch so dargestellt werden.
              Deshalb muß man sie in die HTML-variante umwandeln: (&#x5C)
              Netscape akzeptiert aber nur dezimale engaben.
              Deshalb wandle ich die Hexadezimalzahl in eine Dezimalzahl um.
              (Der code dazu ist aus SELFHTML)

              Beispiel:

              function myEscape(source)
              {
              source = escape(source.substring(start,ende));
              var pos = 0;
              while((pos = source.search(/%(..)/)) != -1)
              {
                source = source.substring(0,pos) + "&#" + xd(RegExp.$1) + ";" + source.substring(pos + 3, source.length);
              }
              return source;
              }

              function xd(x)
              {
              max = 8;
              if(x.length > max)
              {
                return; //Zahl zu groß
              }
              var e = new Array();
              var z = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
              var d = 0, chk = 0;

              for(i=0; i < x.length; i++)  
              {  
              

              for(j=0; j <= 16; j++)
                {
                 if(x.substring(i,i+1) == z[j])
                 {
                  chk = 1; e[i] = j;
                 }
                }
                if(chk == 0)
                {
                 return; //Unerlaubte ziffer;
                }
              }
              for(i=0;i<x.length;i++)
              d = d + e[i] * Math.pow(16,x.length-i-1)
              return d;
              }

              Den auszugebenden String must du der Fuktion myEscape übergeben.
              Sie gibt den geschützten HTML-Code zurück.
              Es geht vieleicht auch einfacher, aber das geht mit Strings mit beliebigen UNICODE-Zeichen.

              Tschüs

              Daniel