Damit ich sagen kann .getHead().getElement("meta").getAttributes -> dann bekomm ich 'name','content',... ausgeben
und auch
.getHead().getElement("meta").getAttribute("name").getValue() -> dann bekomm ich 'description'.
javax.swing.text.Document hat zwar den Ansatz aber damit kommt man spätestens mit Value nicht weiter. Und auch so gibt es da Unstimmigkeiten wenn ich mehrere Beispiele nehme.
das funktioniert nicht weil z.B. wie im Beispiel angegeben Metatags geöffnet aber für "xml" nicht geschlossen werden.
Eine Html Datei ist keine wohl geformte XML Datei
SAXBuilder builder =newSAXBuilder();Document doc;
doc = builder.build("D:\\Beispiel.htm");Element e = doc.getRootElement();System.out.println(e.getName());
Fehler:
Code:
org.jdom.input.JDOMParseException: Error on line 5 of document file:///D:/Beispiel.htm: The element type "meta" must be terminated by the matching end-tag "</meta>".
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:530)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:986)
at Test.main(Test.java:48)
Caused by: org.xml.sax.SAXParseException: The element type "meta" must be terminated by the matching end-tag "</meta>".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:518)
... 2 more
Caused by: org.xml.sax.SAXParseException: The element type "meta" must be terminated by the matching end-tag "</meta>".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:518)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:986)
at Test.main(Test.java:48)
Caused by: org.xml.sax.SAXParseException: The element type "meta" must be terminated by the matching end-tag "</meta>".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:518)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:986)
at Test.main(Test.java:48)
ja ich hab jetzt mal ein einfacheres Beispiel genommen^^ die '>' sind irgendwie anders weggekommen.
Mit dem neuem Beispiel welches ich oben im comment editiert habe, bleibt die Fehlermeldung gleich.
Das Problem ist <meta /> ist XHtml.
Zum Beispiel wenn ich SELFHTML 8.1.2 (HTML-Dateien selbst erstellen) benutzen würde
die nur HTML benutzen da ist <meta > angesagt was bedeutet das diese mit Sax ein Fehler erzeugen würden.
Warum soll es ein Problem sein? Du verlinkst doch selber auf selfhtml:
Wenn Sie XHTML-Standard-konform arbeiten, müssen Sie das meta-Element als inhaltsleer kennzeichnen. Dazu notieren Sie das alleinstehende Tag in der Form <meta name="Eigenschaft" content="Wert" />.
Schau dir von Selfhtml den Quelltext an und du wirst sehen dort wurde <meta > benutzt.
Das reicht mir schon das eine andere Lösung her muss. Verstehe nicht was du damit sagen willst.
Hä? Darum geht es doch garnicht. Ich möchte gerne alle Formen und Arten erreichen können und da diese Art und Weise mit SAX nur mit XHtml funktioniert reicht diese nicht?!
ja darüber habe ich auch schon nachgedacht. Ich dachte aber es gibt die Möglichkeit die ganze Page in ein Java Object zu konvertieren um damit mehr Möglichkeiten zu haben.
Theoretisch möchte ich weit aus mehr als Metatags..