81007
Goto Top

Java XML Reader

Hallo, brauche einmal eure Hilfe.

Ich möchte einen JAVA xml reader schreiben, der eine XML herunterlädt und nach einem Bestimmten wert sucht.

Runterladen klappt super, wenn der XML parser jedoch die XML einlesen möchte bekomme ich
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1]

Hofffe ihr könnt mir helfen, danke!

Hier der Code

public void readConfig() {
try {
configFile = new URL("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
InputStream in = configFile.openStream();
byte buffer = new byte[8192];
FileOutputStream out = new FileOutputStream(new File("eurofxref-daily.xml"));
int _tmp = 0;
while ((_tmp= in.read(buffer)) > 0){
out.write(buffer, 0 , _tmp);
}

XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLEventReader eventReader = inputFactory.createXMLEventReader(in);

// das XML-Dokument lesen
while (eventReader.hasNext()) {
XMLEvent event = eventReader.nextEvent();

if (event.isStartElement()) {

if (event.asStartElement().getName().getLocalPart() == ("gesmes:Sender")) {
event = eventReader.nextEvent();
System.out.println(event.asCharacters().getData());

continue;
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (XMLStreamException e) {
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
}

Content-Key: 121767

Url: https://administrator.de/contentid/121767

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: godlie
godlie 31.07.2009 um 14:30:54 Uhr
Goto Top
Naja ich weis nicht aber ich würd auch einen Fehler ausspucken wenn es die Zieladdresse nicht gibt,
bzw. mir die Zeiladresse einen 404 um die Ohren wirft...

Ist die Url richtig?
Mitglied: AndreasHoster
AndreasHoster 31.07.2009 um 14:41:54 Uhr
Goto Top
Sollte ein Java Stack Trace nicht auch die Zeile ausgeben, in der der Fehler auftritt?
Würde helfen, wenn man den Befehl wüsste, der den Fehler erzeugt.

Ansonsten, Du liest zuerst den Input Stream bis zum Ende ein und gibts danach den Input Stream dem EventReader zum Lesen. Bist Du Dir sicher, daß der den Pointer resettet und wieder von vorne anfängt?
Mitglied: 81007
81007 31.07.2009 um 14:44:27 Uhr
Goto Top
Also bei mir findet er die URL (du musst am ende das " entfernen) hat administrator.de hier irgendwie hinzugefügt.

ALso ich hab ne andere Methode gefunden.
Dafür benötige ich jedoch auch eure Hilfe^^

Wie kann man aus einem String einen Double machen wenn der String text UND zahlen enthält?

Danke
Mitglied: AndreasHoster
AndreasHoster 31.07.2009 um 15:50:11 Uhr
Goto Top
Wäre schön die Lösung zu posten, trotzdem daß man sie selber gefunden hat, falls mal jemand anderes so einen Fehler hat und die Suche verwendet.

Aber zurück zur Frage:
Eigentlich gar nicht, was sollte den bei einem String wie "A2,3B34C5" als Double rauskommen?

Ansonsten, wenn der String irgendwie Struktur hat, die Buchstaben rund um die Zahl entfernen mit Funktionen wie replace, substring, split etc. und dann konvertieren.
Mitglied: 81007
81007 31.07.2009 um 16:37:21 Uhr
Goto Top
Also ich habs jetzt komplett gelöst:

ich habe die XML funktion ganz rausgenommen und die XML datei wie eine normale Textdatei behandelt.
Dann mit

ergebnis = ergebnis.replaceAll("[^0-9+-.]", "");

Alle Sonderzeichen und Buchstaben entfernt

Somit wurde aus der XML datei
<Cube currency='USD' rate='1.4138'/>
ausgelesen und daraus wurde (mit dem replaceAll Befehl)

1.4138 als double.

Danke
Mitglied: godlie
godlie 31.07.2009 um 16:48:24 Uhr
Goto Top
Also xml als plain zu verarbeiten und dann so zu verstümmeln ist schon bald pervers face-smile

wie wärs wenn mans richtig angeht?
Mitglied: 81007
81007 31.07.2009 um 17:11:25 Uhr
Goto Top
Werd ich mir mal durchlesen danke xD

aber für Heut bin ich zufrieden, dass es soweit läuft^^