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"));

Antworten auf die Frage(1)

Ihre Antwort auf die Frage