【问题标题】:Getting SAXException while using document.parse(string)使用 document.parse(string) 时出现 SAXException
【发布时间】:2011-04-16 21:29:15
【问题描述】:

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

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

【问题讨论】:

    标签: java android document inputstream


    【解决方案1】:

    我解决了这个问题:-

    document.parse(new ByteArrayInputStream(stream))

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢您的回复,但我想解决为什么会发生这种情况的问题。
      【解决方案3】:

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

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

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

      【讨论】:

      • 感谢您在我尝试打印与我接受的字符串相同的字符串时的回复,但是当我解析它时出现错误,当我重新转换为输入流时它再次出现错误。我想解决为什么会发生这种情况的问题。我读了一篇有同样问题的博客,他们说使用字符串缓冲区来转换流而不是字符串阅读器。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      • 2010-09-15
      • 2013-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多