SAX error: incompatible types: String cannot be converted to InputSource
SAX error: incompatible types: String cannot be converted to InputSource
相关代码; 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 的 say:
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.
因此,对于 example,这需要在 html
中读取 InputStream
??
的字符流
tagsoup
是否更好地用于 身份转换?但是,怎么办?
您可以像这样访问从 URL 后面的资源中读取的 InputStream:
InputStream i = new URL("http://...").openConnection().getInputStream();
然后您可以使用 i
作为您的 SAXSource
。
有一个构造函数 https://docs.oracle.com/javase/8/docs/api/org/xml/sax/InputSource.html#InputSource-java.lang.String- 接受系统 ID,例如一个 URL 所以你可以使用 Source input = new SAXSource(xmlReader, new InputSource("http://books.toscrape.com/"));
.
相关代码; 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 的 say:
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.
因此,对于 example,这需要在 html
中读取 InputStream
??
tagsoup
是否更好地用于
您可以像这样访问从 URL 后面的资源中读取的 InputStream:
InputStream i = new URL("http://...").openConnection().getInputStream();
然后您可以使用 i
作为您的 SAXSource
。
有一个构造函数 https://docs.oracle.com/javase/8/docs/api/org/xml/sax/InputSource.html#InputSource-java.lang.String- 接受系统 ID,例如一个 URL 所以你可以使用 Source input = new SAXSource(xmlReader, new InputSource("http://books.toscrape.com/"));
.