使用document.parse时获取SAXException(string)

时间:2011-04-16 21:29:16

标签: java android document inputstream

我想重用来自HTTP response.resultset()...

的Inputstream
  • 我将inputstream转换为byte []数组(也需要存储,所以我创建了字节数组。)
  • 转换成字符串
  • 当我将它传递给document.parse(string)时出现错误saxparserException:--- eof not found
  • 使用document.parse(stream)

// ------------以下方法对我没有帮助,每个方法都导致了 找不到saxparserException protocl。

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.IOException;    

public static String readInputStreamAsString(InputStream in) 
    throws IOException {

    BufferedInputStream bis = new BufferedInputStream(in);
    ByteArrayOutputStream buf = new ByteArrayOutputStream();
    int result = bis.read();
    while(result != -1) {
      byte b = (byte)result;
      buf.write(b);
      result = bis.read();
    }        
    return buf.toString();
}



//--------------


byte[] bytes=new byte[inputStream.available()];
inputStream.read(bytes);
String s = new String(bytes);

//------------------

  StringBuilder response = new StringBuilder();
  int value = 0;
  boolean active = true;
  while (active) {
        value = is.read();
        if (value == -1) {
            throw new IOException("End of Stream");
        } else if (value != '\n') {
            response.append((char) value);
            continue;
        } else {
            active = false;
        }
    }
    return response.toString();

//--------------

 BufferedInputStream ib = new BufferedInputStream(is,1024*1024);
 StringBuffer sb = new StringBuffer();
 String temp = ib.readLine();
 while (temp !=null){
     sb.append (temp);
     sb.append ("\n");
     temp = ib.readLine();
    }
 s = sb.toString()

3 个答案:

答案 0 :(得分:1)

我使用以下方法解决了这个问题: -

document.parse(new ByteArrayInputStream(stream))

答案 1 :(得分:0)

如果您获得包含xml数据的http响应,则可以使用saxparser解析xml数据。

答案 2 :(得分:0)

我怀疑您可能误解了SAXParser.parse方法签名。

采用String参数的parse方法的版本期望String表示引用内容而不是内容本身的URI。

如果您已将输入保存在String变量中,则最好在字符串上打开StringReader,在StringReader上创建一个InputSource,然后将其传递给解析器。