Java 使用document.parse(字符串)时获取SAXException

Java 使用document.parse(字符串)时获取SAXException,java,android,document,inputstream,Java,Android,Document,Inputstream,我想重用来自HTTP response.resultset()的Inputstream 我将inputstream转换为byte[]数组(还需要存储,以便创建byte数组。) 然后转换成字符串 当我将其传递给document.parse(string)时,出现错误saxparserException:---找不到eof 可以很好地处理document.parse(stream) //------------以下方法对我没有帮助,每种方法都会导致 未找到saxparserException协议

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

  • 我将inputstream转换为byte[]数组(还需要存储,以便创建byte数组。)
  • 然后转换成字符串
  • 当我将其传递给document.parse(string)时,出现错误saxparserException:---找不到eof
  • 可以很好地处理document.parse(stream)
//------------以下方法对我没有帮助,每种方法都会导致
未找到saxparserException协议

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()

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

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

接受字符串参数的parse方法版本期望该字符串表示引用内容而不是内容本身的URI


如果已将输入保存在字符串变量中,则最好在字符串上打开一个StringReader,将InputSource基于StringReader,并将其传递给解析器。

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


document.parse(new ByteArrayInputStream(stream))

谢谢您的回复,当我尝试打印字符串时,它与我接受的字符串相同,但当我解析它时会出现错误,当我重新转换为inputstream时,它会再次出现错误。我想解决为什么会发生这种事情的问题。我读了一篇博客,他们说使用字符串缓冲区来转换流,而不是字符串读取器。谢谢你的回复,但我想解决为什么会发生这种事情的问题。