Welcher Weg um XML von URL zu laden?

  • Themenstarter Themenstarter rasdvatri
  • Beginndatum Beginndatum
R

rasdvatri

Gast
Hallo!

Was XML angeht, bietet Java ja einiges - da verliert man schnell die Übersicht.

Erstmal was ich tun möchte:

Ich habe eine gültige URL (vom Typ URL). Diese verweist auf eine Quelle im Internet, welche im Normalfall eine XML-Datei enthalten sollte.

Ziel ist jetzt, die XML-Datei von der URL zu laden. Sekundärziel ist, ein paar items auszulesen. Letzteres ist kein Ding, muss man sich halt einlesen.

Aber ich suche die beste Möglichkeit, oder zumindest die eleganteste ohne viel "Drumherum", die XML-Datei zu laden. Dass die URL in ihrer Struktur korrekt ist, habe ich schon sicher gestellt. Allerdings muss noch folgendes behandelt werden:

- Die URL ist nicht erreichbar. Sei es, weil die URL nicht existiert, oder weil der Server gerade nicht erreichbar ist. Das muss ich garnicht unterscheiden, es reicht zu wissen, dass die Datei eben nicht verfügbar ist. Allerdings wäre eventuell so etwas wie ein Timeout sinnvoll - wenn nach x Sekunden nichts geht, kann man ja davon ausgehen, dass die Datei erstmal nicht erreichbar ist.

- Die Datei ist gar keine gültige XML-Datei

Das reicht für den Anfang. Frage: muss ich das alles mit dem Stream-Klassen manuell machen, oder gibt es eine XML-Klasse, die das schon kann?

Weiterer Punkt: welche Klasse/Paket würdet ihr mir empfehlen, wenn ich später noch simple Dinge auslesen will aus derXML-Datei? Schreiben muss ich nicht, wie gesagt nur lesen. Es gibt ja glaube ich DOM, SAX, etc...

Vielen Dank!
 
Hey ich hoffe ich habe deine Frage richtig Verstanden! Also du willst aus dem Internet über ein URL eine XML laden! Also ich würde das mit JDOM machen einfach und schnell! schau mal hier: (du benötigst jdom.jar hier

Java:
		URL url = new URL("http://www.google.de/test.xml");

		Document document = null;

		SAXBuilder builder = new SAXBuilder();
		document = builder.build(url);

		Element root = document.getRootElement();
		Element e = root.getChild("node");
		String value = e.getAttributeValue("value");

@edit ist nur ein Beispiel! die test.xml gibt es nicht! aber anstat kann du den URL von dein rein schrieben und mal schauen ob du eine node findest!
 
Zuletzt bearbeitet:
Nur ein kleiner Einwurf, der mit der Frage erstmal nichts zu tun hat:

Verwende lieber URI statt URL, da manche Funktionen von URL etwas unintuitiv in ihrem Verhalten, oder wie Herr Manson sagte broken, sind (z.B. equals).
 
Hallo!

Danke mal soweit. Habe jedoch etwas nachgedacht und bin zu dem Entschluss gekommen, dass es wiederverwertbarer wäre, wenn ich jede beliebige Textdatei downloaden und als String bereitstellen könnte.

Hierzu gibt es bei Google massenhaft Beispiele, jeder benutzt einen andere Streamklasse. Deseiteren wird dort immer per readline der gezogene Stream zeilenweise ausgelesen und an ein Stringbuilderobjekt angehängt. Gitb es keinen Weg, der ohne Schleife auskommt? Ich mein ja nur, aus Performancegründen... readline ist nämlich wie es aussieht deprecated und read() liest gar nur byteweise.

Wie würdet ihr das ganze lösen, was ist der optimalste Weg eine textbasierte Datei aus dem Netz lokal als String bereit zu stellen?

PS: seht ihr Vorteile darin (aus Gründen der Wiederverwertbarkeit oder Eleganz usw), wenn die geladene Datei statt String als Stream verfügbar gemacht wird? Wobei dann immer noch die Frage bleibt, wie am besten einen String daraus machen, wenn man denn wollte..

Danke!
 

Neue Themen


Zurück
Oben