Использую простую схему:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException e) {
throw new HtmlProcessorException(e);
}
Document xml = null;
try {
xml = db.parse(new ByteArrayInputStream(html.getBytes(StandardCharsets.UTF_8)));
} catch (SAXException e) {
throw new HtmlToXmlConvertionException("Html parsing exception", e);
} catch (IOException e) {
throw new HtmlToXmlConvertionException("Html reading exception", e);
}
Но HTML содержит ноду с неопределенным атрибутом:
<link href="https://..." mask rel="icon" sizes="any">
В этом примере - mask
не определен, выбрасывается эксепшн:
Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1442; Attribute name "mask" associated with an element type "link" must be followed by the ' = ' character.
Не могу нагуглить, есть ли способы заставить парсер воспринимать такие ситуации правильно, т.е. считать, что если нет =""
, то атрибут с пустым значением? Или все-таки придется еще регекспами искать такое и вставлять это «дефолтное» значение?