XML Code von Webseiten auslesen?

Kumaro

Mitglied
RDF Code von Webseiten auslesen?

Hi liebes Java-Forum, bisher habe ich Webseiten immer mit folgendem Script eingelesen:


Java Code:
Java:
 public String getStrFromUrl(String surl) {
        
        
        final String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12";
          
          try {
             URL url = new URL(surl);
             URLConnection conn = url.openConnection();
             conn.addRequestProperty("User-Agent", userAgent);
     
             BufferedReader in = new BufferedReader(new InputStreamReader(
                   conn.getInputStream()));
             String str;
             StringBuilder builder = new StringBuilder(1024);
             while ((str = in.readLine()) != null) {
                builder.append(str);
                builder.append("\n"); //damit es hinterher auch so aussieht wie vorher ;-) 
             }
             in.close();
                         //Test-Output
//                       System.out.println(builder.toString());
             
            System.out.println("Seite wurde eingelesen.");           
            return builder.toString();
          
          } catch (MalformedURLException e) {
             System.out.println(e.getMessage());
          
          } catch (IOException e) {
             System.out.println(e.getMessage());
          }
        return "Error";
       }

Das hat soweit auch immer super funktioniert und habe dann den Quelltext der Seite zurück bekommen.

Leider habe ich jetzt eine Website mit xml Code dazwischen, und dieser wird von der Funktion ignoriert.
Sieht ungefähr so aus:


XML Code:
XML:
 <rdf:Description rdf:about="http://blabla"><j.5:hasMeasurementProperty rdf:eID="1111"/>
<rdf:typerdf:resource="http://blablabla"/></rdf:Description>

Somit bekomm ich lediglich den html Teil zurück.

Ausgabe:
http://blabla
http://blablabla

Die ID "1111" kann ich aber nicht aus dem Quelltext lesen weil sie mit dem XML Code verschwindet beim auslesen?!

Leider brauch ich aber auch die Informationen des XML Teils.
Habt ihr eine Idee was ich machen kann damit ich auch den XML Teil zurückbekomme?

Vielen Dank im Voraus.

Gruß
Kumaro
 
Zuletzt bearbeitet von einem Moderator:

deepthroat

Erfahrenes Mitglied
Hi.

Du liest die Daten ganz normal vom Server via http aus. Da verschwindet nichts, egal was es ist.

Das Problem liegt also vermutlich einfach an deiner Ausgabe bzw. Weiterverarbeitung des Strings. Zeig diesen Code.

Kannst du dazu eine konkrete Beispiel-URL angeben?

Gruß
 

Kumaro

Mitglied
mh, aber es muss daran liegen. Wenn ich nämlich direkt danach den Code ausgebe, fehlen eben die besagten sachen.

Java:
/** ReadFirst Site with all NodeLinks**/
		WebsiteReader nodeLinksSiteReader = new WebsiteReader();  
		
                                  String NodeLinkSiteHtmlCode = nodeLinksSiteReader.getStrFromUrl(nodeURL);
		System.out.println("Verbindung hergestellt - Website ausgelesen");
		
                                  System.out.println(NodeLinkSiteHtmlCode);

Gruß
 

javaDeveloper2011

Erfahrenes Mitglied
Hi,

jeglicher Text müsste aber korrekt geladen werden...
Eine abgewandelte Version funktioniert so definitiv:
Java:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class Downloader {

	private static final String LINE_SEP = System.getProperty("line.separator");

	public static void main(String[] args) {
		System.out.println(getSiteByUrl(args[0]));
	}

	public static String getSiteByUrl(String url) {
        try{
			URLConnection conn = new URL(url).openConnection();
			conn.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12");
			BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			StringBuilder sb = new StringBuilder();
			String s;
			while((s = in.readLine()) != null)
				sb.append(s).append(LINE_SEP);
			in.close();          
            return sb.substring(0, sb.length()-LINE_SEP.length());
		} 
		catch(Exception ex) {
			ex.printStackTrace();
        	return null;
        }
	}

}
 

Kumaro

Mitglied
Danke für den Tipp. Habs ausprobiert... leider das selbe Ergebnis. Nur der html Teil wird ausgelesen :(...
 

Kumaro

Mitglied
Mh, komisch. Also wenn ich die URL selber eingebe und mir den Quelltext im firefox anzeigen lasse dann sind da eben auch die xml sachen...

Ich raff es nicht ^^...

Gruß
 

Kumaro

Mitglied
Äh doch ich könnte sie verraten, doch die würde dir leider nichts bringen da man wie gesagt nur über den SSH Tunnel darauf zugreifen kann ^^. sry. Sonst hätte ich sie schon gepostet.
Ich weiß das hilft nicht wirklich >_<
 

Kumaro

Mitglied
Ich hab jetzt erst gerafft das es sich gar nicht um XML Sondern um RDF handelt!! Macht das ein unterschied****?