Соответствующий код; barfs при создании экземпляра SAXSource:
TransformerFactory factory = TransformerFactory.newInstance();
XMLReader xmlReader = XMLReaderFactory.createXMLReader("org.ccil.cowan.tagsoup.Parser");
Source input = new SAXSource(xmlReader, "http://books.toscrape.com/");
Result output = new StreamResult(System.out);
factory.newTransformer().transform(input, output);
сказать JavaDoc:
public SAXSource(XMLReader reader,
InputSource inputSource)
Create a SAXSource, using an XMLReader and a SAX InputSource. The Transformer or SAXTransformerFactory will set itself to be the reader's ContentHandler, and then will call reader.parse(inputSource).
Глядя на InputSource, показывает:
InputSource(InputStream byteStream)
Create a new input source with a byte stream.
InputSource(Reader characterStream)
Create a new input source with a character stream.
Таким образом, для пример это повлечет за собой поток символов для чтения в html для InputStream ??
Будет ли лучше использовать tagsoup для преобразования идентичности это? Но как?
это намного практичнее, спасибо.
я вставил код в ответ.




Вы можете получить доступ к InputStream, который читает из ресурса за URL-адресом следующим образом:
InputStream i = new URL("http://...").openConnection().getInputStream();
Затем вы можете использовать i для вашего SAXSource.
Вы можете это сделать, но если вы не думаете, что вы умнее парней, написавших XML-парсер, с точки зрения управления HTTP-соединениями, тогда проще просто сделать new InputSource("http://....").
Я так не думаю :) Но это способ заставить его работать.
Существует конструктор https://docs.oracle.com/javase/8/docs/api/org/xml/sax/InputSource.html#InputSource-java.lang.String-, который принимает системный идентификатор, например. URL-адрес, чтобы вы могли использовать Source input = new SAXSource(xmlReader, new InputSource("http://books.toscrape.com/"));.
Вы можете использовать
URLConnection, у которого есть геттер дляInputStream, который представляет ресурс, стоящий за этим URL-адресом.