Как использовать JAXB с HTML?
Я хотел бы разобрать некоторый неприятный HTML в объект Java, используя JAXB. (Я на Java 7).
Tagsoup - SAX-совместимый XML-парсер, который может обрабатывать неприятный HTML.
Как я могу настроить JAXB для использования Tagsoup для демаршаллинга HTML?
Я попытался установить System.setProperty ("org.xml.sax.driver", "org.ccil.cowan.tagsoup.Parser");
Если я создаю XMLReader, он использует Tagsoup, но не когда я использую JAXB.
Использует ли com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl DOM или SAX для анализа XML?
Как я могу сказать JAXB использовать SAX?
Как я могу сказать JAXB использовать TagSoup в качестве реализации SAX?
Согласно предложению Блейза, попробовал ниже, но получил SAXParseException в последней строке. Разбор в порядке, когда выполняется только с XMLReader:
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"));