Servus!
Ich schreibe zur Zeit für meine DVD-Sammlung ein kleines Programm, das Film-Informationen von einer Website auslesen soll.
Dazu lese ich mit JTidy die HTML-Seite ein und erzeuge daraus ein XML-Dokument, welches ich mittels XPath durchforste, um meine benötigten Informationen auszulesen.
Soweit, so gut. Leider kriege ich beim Ausführen des Codes folgende Fehlermeldung:
Ein Blick in das von JTidy erzeugte XML-Dokument zeigt folgendes in der entsprechenden Fehlerzeile:
Man sieht, dass das Attribut align zweimal auftaucht, was vom fehlerhaftem HTML der Website kommt und JTidy leider nichtc korrigiert. Auf Grund dieses Fehlers, schmeisst mir die Evaluierung mittels XPath immer eine Exception.
Kennt sich eventuell jemand von Euch mit JTidy etwas besser aus und weiss, ob man das irgendwie konfigurationstechnisch ausstellen kann?
Oder hat jemand eine andere Lösung, wie ich doppelte Attribute aus einem XML-Dokument herauslöschen kann?
Ich schreibe zur Zeit für meine DVD-Sammlung ein kleines Programm, das Film-Informationen von einer Website auslesen soll.
Dazu lese ich mit JTidy die HTML-Seite ein und erzeuge daraus ein XML-Dokument, welches ich mittels XPath durchforste, um meine benötigten Informationen auszulesen.
Code:
Tidy tidy = new Tidy();
tidy.setDropEmptyParas(true);
tidy.setDropFontTags(true);
tidy.setFixComments(true);
tidy.setHideEndTags(false);
tidy.setIndentAttributes(true);
tidy.setMakeClean(true);
tidy.setSmartIndent(true);
tidy.setQuiet(true);
tidy.setXHTML(true);
tidy.setXmlOut(true);
tidy.setXmlSpace(true);
tidy.setXmlPi(true);
try {
URL url = new URL(urlString);
InputStream is = url.openStream();
OutputStream os = new FileOutputStream(xml_mainSite);
tidy.parse(is, os);
is.close();
os.close();
is = new FileInputStream(xml_mainSite);
InputSource inputSource = new InputSource(is);
String title = xpath.evaluate(testExp, inputSource);
System.out.println("Titel: " + title);
is.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XPathExpressionException e) {
e.printStackTrace();
}
Soweit, so gut. Leider kriege ich beim Ausführen des Codes folgende Fehlermeldung:
Code:
[Fatal Error] :2288:38: Attribute "align" was already specified for element "iframe".
org.xml.sax.SAXParseException: Attribute "align" was already specified for element iframe".
Ein Blick in das von JTidy erzeugte XML-Dokument zeigt folgendes in der entsprechenden Fehlerzeile:
Code:
<iframe name="GoogleAd"
src="http://i.imdb.com/images/3pads/google/google-afc.html?channel=t-channel"
align="top"
scrolling="no"
width="500"
height="240"
frameborder="0"
marginheight="0"
marginwidth="0"
align="middle"></iframe>
Man sieht, dass das Attribut align zweimal auftaucht, was vom fehlerhaftem HTML der Website kommt und JTidy leider nichtc korrigiert. Auf Grund dieses Fehlers, schmeisst mir die Evaluierung mittels XPath immer eine Exception.
Kennt sich eventuell jemand von Euch mit JTidy etwas besser aus und weiss, ob man das irgendwie konfigurationstechnisch ausstellen kann?
Oder hat jemand eine andere Lösung, wie ich doppelte Attribute aus einem XML-Dokument herauslöschen kann?