Получение SAXException при использовании document.parse (строка) - PullRequest
0 голосов
/ 17 апреля 2011

Я хочу повторно использовать Inputstream, поступающий из HTTP response.resultset () ...

  • Я преобразовал входной поток в массив байтов [] (также необходимо сохранить, поэтому я создаю массив байтов.)
  • Чем преобразовать в строку
  • когда я передаю его в document.parse (строка) выдал ошибку 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 ]

1 голос
/ 18 апреля 2011

Я решил проблему с помощью: -

document.parse (новый ByteArrayInputStream (stream))

0 голосов
/ 17 апреля 2011

Я подозреваю, что вы могли неправильно понять сигнатуру метода SAXParser.parse.

Версии метода синтаксического анализа, которые принимают аргумент String, предполагают, что String будет представлять URI, ссылающийся на контент, а не на сам контент.

Если вы сохранили входные данные в переменной String, лучше всего открыть StringReader для строки, создать InputSource на StringReader и передать его синтаксическому анализатору.

0 голосов
/ 17 апреля 2011

Если вы получили http-ответ, включающий данные XML, вы можете проанализировать данные XML, используя saxparser .

...