SAXBuilder / Input aus Stream

stephanfeltel

Grünschnabel
Hallo ich hab mal eine Frage an euch,

kann man mit dem SAXBuilder auch ein Dokument parsen, welches ich von einem Server als Antwort zurückbekomme.

Das Problem ist, ich möchte eine SVG- Datei parsen, die ich momentan als "embeddet" Objekt in eine HTML Datei einbaue.

Code:
<object data=\"" + url + "\" type=\"image/svg+xml\" width=\"640\" height=\"502\">

so in der "url" steht dann ein Request an einen Server, der mir als Antwort ein SVG- Dokument schickt. Dieses würde ich gern parsen. Ich hab das mal mit einer statischen Datei gemacht, da mach ich das ja wie folgt:

Code:
public static Document getDocument(String filename) 
  {
    try {
      SAXBuilder builder = new SAXBuilder(false);
      return builder.build(filename); // return the parsed document      
    }
    catch (JDOMException e) { 
    ServerLogger.debug("JDOMException:",e.toString());
      //System.exit(1);
    }
    catch (IOException io){
    ServerLogger.debug("Dateifehler:",io.toString());
    }
    return null; // is never reached
  }
  
  
  public static String getLayer() {
  
    String ebenen="";
    // erzeugt das JDOM Dokument
    Document doc = getDocument ("http://localhost/Projekt/test.svg");
    
    // Zugriff auf root-Element
    Element root = doc.getRootElement();
    //ebenen+=root.getName()+"-->";
    
    List NamedLayerListe = root.getChildren("NamedLayer");
    Iterator NamedLayer_Iterator = NamedLayerListe.iterator();
    while (NamedLayer_Iterator.hasNext()) {
        Element aktLayer = (Element) NamedLayer_Iterator.next();
        ebenen+=LayerToCheckBox(aktLayer.getChild("Name").getText(),"");
        //ebenen+=aktLayer.getChild("Name").getText()+"<br>";
    }
    return ebenen;
  }
}

So klappt das ja schon mal ganz gut. Jetzt brauch ich das ganze aber wie gesagt aus einem nicht statischen Dokument.

Habt ihr ne Ahnung wie ich das dem SAXBuilder beibringe?
das müsste ja sicher in der Zeile:
Document doc = getDocument ("http://localhost/Projekt/test.svg");
passieren.
Bin dankbar für jede Idee,
besten Dank...
 
Der SAXBuilder will einen InputSream.

Du solltest schauen welche Klasse eine Verbindung mit einer URL
aufbaut und dir einen InputStream zurückgeben kann.

http://java.sun.com/j2se/1.4.2/docs/api/index.html


dann wirst du ganz schnell die Klasse URLConnection finden
die die Methode: getInputStream() definiert.

http://java.sun.com/j2se/1.4.2/docs/api/java/net/URLConnection.html#getInputStream()

dann wirst du schnell auf Code kommen der so aussieht:

Code:
URLConnection urlConn = new URLConnection("http://....");
Document doc = new SAXBuilder(false).build(urlConn);
 
Zurück