XML Dokument einlesen mit JDOM

paradig

Grünschnabel
Hallo

ich versuche eine Webseite einzulesen um dann Daten zu extrahieren. Diese Zahlen (Aktienkurse) sollen zu einem bestimmten Zeitpunkt eingelesen (zB eröffnung und schluss).

Die Webseite scheint aber entweder schlecht erstellt worden zu sein oder es handelt sich um ein anderes Format!

Da ich aber den Seitenquellcode sowohl vorne wie auch hinten abschneide kann ich mir das nicht so ganz erklären.
Wenn ich den Code abgeschnitten habe steht z
HTML:
<tr bgcolor="#ffffff">
<td valign="middle" height="120" width="1" class="emptyCellPadding"><img src="http//bild" width="1" height="20"><img src="http://bild" width="10" height="20" alt=" "></td>
<td align="left" valign="middle" class="onheadNav"><a href="http://linkzuChart"> SAP</a><img src="http:gif" width="4" border="0" alt=" ">( <a id="kurse">19</a><img align="abse" border="0" height="25" width="25" alt="Volumen" title="Volumen" src="gif">)<span> </span></td>
<td align="left" nowrap valign="middle" class="contentValueFont">EURÂ*122,90</td>
<td align="middle" valign="middle" class="contentValueFont">2000000</td>
<td align="left" valign="middle" class="contentValueFont">05.01.11 12:22:12 MEZ</td>
<td><img src="s.gif" width="1" height="1" alt=" "></td>
</tr>


Jetzt steht hier in der Zeile drei der Aktientitel (SAP) und in der Zeile vier steht Kurs und in der Zeile 6 das Datum.
Diese drei Werte würde ich nun gerne auslesen.
Aber bei den Bilderlinks kommt folgende Fehlermeldung:
Error on line 2: The element type "img" must be terminated by the matching end-tag "</img>

Ich bin mir nun nicht sicher ob ich alles richtig mache, wenn ich zum Beispiel bei comdirekt das einlese habe ich keine Probleme, aber bei diesem code schon.

Kann mir jemand helfen?

danke

PARA
 
Zuletzt bearbeitet von einem Moderator:
Also HTML ist nicht XML
Die Fehlermeldung sagt es ja das </img> fehlt - JDOM kommt damit nicht klar wenn ein Tag geöffnet, aber nicht geschlossen wird..

ich denke mal am einfachsten wird es sein wenn du den HTML Code vor der übergabe an JDOM änderst.
suche nach "img" und ersetze durch "/img" sollte helfen.
 
Hallo

in dem oben genannten Code, das ist das original nur sind da keine Tag schließer.
Deshalb habe ich mit repleace grundlegend alle mit / ersetzt.

Aber ich denke es geht eher darum das mein Beispiel kein XML ist sondern HTML?
also sollte ich mit einem HTML Parser arbeiten?

Gruss

PARA
 
Hi,
versuch es mal hiermit:
Java:
	public void read(String path) {
		URL url;
		InputStream inputStream = null;
		InputStreamReader reader = null;
		try {
			url = new URL(path);
			inputStream = url.openStream();
			reader = new InputStreamReader(inputStream);
			
			ParserDelegator parserDelegator = new ParserDelegator();
			ParserCallback parserCallback = new ParserCallback() {
				public void handleText(final char[] data, final int pos) {
				}

				public void handleStartTag(Tag tag, MutableAttributeSet attribute, int pos) {
					if (tag == Tag.A) {
					}
				}

				public void handleEndTag(Tag t, final int pos) {
				}

				public void handleSimpleTag(Tag t, MutableAttributeSet a, final int pos) {
				}

				public void handleComment(final char[] data, final int pos) {
				}

				public void handleError(final java.lang.String errMsg, final int pos) {
				}
			};
			parserDelegator.parse(reader, parserCallback, false);
		} catch(MalformedURLException e) {
			e.printStackTrace();
		} catch(IOException e) {
			e.printStackTrace();
		} finally {
			try {
				reader.close();
			} catch(IOException e) {
				e.printStackTrace();
			}
			try {
				inputStream.close();
			} catch(IOException e) {
				e.printStackTrace();
			}
		}
	}
Damit kannst du den Inhalt einer URL direkt auslesen und mit den Inhalt verarbeiten. Das geht wahrscheinlich einfacher und ist effektiver.

Gruß

Fabio
 
Hallo PARA,

wie oben bereits beschrieben übergibst du dem JDOM-Parser HTML anstatt XML.
Schau dir mal die Bibliothek JTidy an. Mit der kannst du HTML in XML umwandeln.

Grüße,

Daniel
 
Zurück