Если вы имеете дело с несколькими объектами, вы можете ожидать fromXML
(InputStream
in) несколько раз, чтобы получить каждый объект. Метод не обрабатывает, как ожидалось, и выдает плохо сформулированное сообщение об исключении, если вы делаете это. В качестве альтернативы, оборачивание всех объектов в более крупный объект может привести к тому, что программа будет использовать больше памяти, чем необходимо, или не хватит памяти.
Чтобы исправить это, я создал универсальный служебный метод, чтобы я мог анализировать каждый маленький объект в его собственную строку, чтобы я мог fromXML(String)
метод и при этом увеличивать размер.
Пример звонков:
String element = next(in, "</MyObject>");
MyObject o = (MyObject)xstream.fromXML(element);
public static String next(InputStream in, String occurence) throws IOException {
StringBuffer sb = new StringBuffer();
int i;
int pos = 0;
while((i = in.read()) != -1) {
sb.append((char)i);
if(i == occurence.charAt(pos)) {
pos ++;
} else
pos = 0;
if(pos == occurence.length())
return sb.toString();
}
return null;
}