Java 使用document.parse(字符串)时获取SAXException
我想重用来自HTTP response.resultset()的InputstreamJava 使用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协议
- 我将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时,它会再次出现错误。我想解决为什么会发生这种事情的问题。我读了一篇博客,他们说使用字符串缓冲区来转换流,而不是字符串读取器。谢谢你的回复,但我想解决为什么会发生这种事情的问题。