流和实际数据有什么区别?

编程入门 行业动态 更新时间:2024-10-27 22:23:22
本文介绍了流和实际数据有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

在java中有输入/输出流.

In java there are streams for input/output.

我很困惑,当我创建一个流时,它是流中的数据还是只是数据的管道?

I am confused that when i create a stream, is it the data that is in the stream or just the pipeline for the data ?

实际上,我正在尝试解析从休息请求创建的 xml 响应到返回 xml 响应的 Web 服务.

Actually i am trying to parse an xml response created from a rest request to a web service that returns an xml response.

//Parse Xml ParseXml parser=new ParseXml(); parser.parseStream(connection.getInputStream());

其中 connection 是一个 HttpURLConnection 对象.

where connection is an HttpURLConnection Object.

以下是 parseStream() 的源码

Following is the source for parseStream()

import java.io.IOException; import java.io.InputStream; import java.io.Reader; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.XMLReaderFactory; public class ParseXml { public void parseStream(InputStream input) { XMLReader xmlReader; try { xmlReader = (XMLReader) XMLReaderFactory.createXMLReader(); xmlReader.setContentHandler(new XmlParser()); xmlReader.parse(new InputSource(input)); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }

我遇到了一个例外:

[Fatal Error] :1:1: Premature end of file. org.xml.sax.SAXParseException: Premature end of file. at com.sun.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) at xmlparsing.ParseXml.parseStream(ParseXml.java:24) at smssend.SmsSend.restHttpPost(SmsSend.java:129) at main.SmsApiClass.main(SmsApiClass.java:28)

推荐答案

InputStream 是可以从中读取数据的东西.我也可以称它为数据源,但我不会称其为管道.对我而言,管道涉及多个粘在一起的部分.

An InputStream is something from which you can read data. I could also call it a data source, but I wouldn't call it a pipeline. To me a pipeline involves multiple parts that are sticked together.

关于您的解析器错误:在将数据直接提供给解析器之前,您应该将其写入文件或 System.out,以确保某些数据确实到达.

Regarding your parser error: Before feeding the data directly to the parser, you should write it to a file or System.out, just to make sure that some data actually arrived.

然后您应该将该数据提供给解析器,看看当您提供已知数据时会发生什么.

Then you should feed that data to the parser, to see what happens when you feed it known data.

如果这两种情况都正常,你就可以直接喂数据了.

And if these two cases work properly, you can feed the data directly.

[更新 2011-03-12]

这是一个对我有用的完整示例.也许你可以发现你的代码的不同之处(你只发布了部分,尤其是创建了 InputStream 的部分):

Here is a complete example that works for me. Maybe you can spot the difference to your code (of which you only posted parts, especially not the part that creates the InputStream):

package so5281746; import java.io.IOException; import java.io.InputStream; import java.URL; import java.URLConnection; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import org.xml.sax.helpers.XMLReaderFactory; public class ParseXml { public static void parseStream(InputStream input) { try { XMLReader xmlReader = XMLReaderFactory.createXMLReader(); xmlReader.setContentHandler(new XmlParser()); xmlReader.parse(new InputSource(input)); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) throws IOException { URLConnection conn = new URL("repo1.maven/maven2/org/apache/ant/ant/maven-metadata.xml").openConnection(); InputStream input = conn.getInputStream(); parseStream(input); } static class XmlParser extends DefaultHandler { @Override public void startDocument() throws SAXException { System.out.println("startDocument"); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out.println("startElement " + localName); } @Override public void endDocument() throws SAXException { System.out.println("endDocument"); } } }

更多推荐

流和实际数据有什么区别?

本文发布于:2023-11-25 22:20:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1631584.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:有什么区别   数据

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!