如何将 InputStream 转换为 InputSource?
Posted
技术标签:
【中文标题】如何将 InputStream 转换为 InputSource?【英文标题】:How to convert InputStream to InputSource? 【发布时间】:2013-06-11 16:46:31 【问题描述】:所有,
我写了一个简单的 SAX XML 解析器。它可以工作,我正在使用本地 XML 文件对其进行测试。这是我的代码:
SAXParserFactory spf = SAXParserFactory.newInstance();
XMLParser xmlparser = null;
try
SAXParser parser = spf.newSAXParser();
XMLReader reader = parser.getXMLReader();
xmlparser = new XMLParser();
reader.setContentHandler( xmlparser );
reader.parse( new InputSource( getResources().openRawResource( R.raw.categories ) ) );
现在我需要从网站上读取这个 XML 文件。我正在尝试的代码是:
public InputStream getXMLFile()
URL url = new URL("http://example.com/test.php?param=0");
InputStream stream = url.openStream();
Document doc = docBuilder.parse(stream);
reader.parse( new Communicator().getXMLFile() );
我收到编译器错误
“方法 parse(InputSource) 不适用于参数 (InputStream)”。
我需要帮助弄清楚我需要什么。
谢谢。
【问题讨论】:
【参考方案1】:虽然我不想听起来很明显,但你有什么理由不使用this constructor?
InputSource source = new InputSource(stream);
Document doc = docBuilder.parse(source);
请注意,这与您在第一部分代码中所做的非常相似。毕竟,openRawResource
也会返回一个 InputStream
...
【讨论】:
如果您使用 JUST 流作为源,则解析器没有关于流来自何处的信息。如果您从 URL 构造源,那么它可以使用此信息来构造引用文档的 URL。例如,如果您启用 XInclude 并且您的 XML 流包含以上是关于如何将 InputStream 转换为 InputSource?的主要内容,如果未能解决你的问题,请参考以下文章