Wie verwende ich JAXB mit HTML?
Ich möchte ein böses HTML mit JAXB in ein Java-Objekt umwandeln. (Ich bin auf Java 7).
Tagsoup ist ein SAX-kompatibler XML-Parser, der bösartiges HTML verarbeiten kann.
Wie kann ich JAXB so einrichten, dass Tagsoup zum Aufheben der Marshalling-Funktion für HTML verwendet wird?
Ich habe versucht, System.setProperty ("org.xml.sax.driver", "org.ccil.cowan.tagsoup.Parser") festzulegen.
Wenn ich einen XMLReader erstelle, wird Tagsoup verwendet, jedoch nicht, wenn ich JAXB verwende.
Verwendet com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl DOM oder SAX zum Parsen von XML?
Wie kann ich JAXB anweisen, SAX zu verwenden?
Wie kann ich JAXB anweisen, TagSoup als SAX-Implementierung zu verwenden?
Wie Blaise vorschlug, wurde unten versucht, aber SAXParseException in der letzten Zeile abgerufen. Das Parsen ist in Ordnung, wenn es nur mit dem XMLReader erledigt ist:
JAXBContext jaxbContext = JAXBContext.newInstance(Thing.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
XMLReader xmlReader = new org.ccil.cowan.tagsoup.Parser();
xmlReader.parse("file:///c:/test.xml");
System.out.println("parse ok");
xmlReader.setContentHandler(unmarshaller.getUnmarshallerHandler());
//SAXParseException; systemId: file:/c:/test.xml; lineNumber: 5; columnNumber: 3; The element type "br" must be terminated by the matching end-tag "</br>".
Thing thing = (Thing) unmarshaller.unmarshal(new File("c:/test.xml"));