И это не '&'
Im, использующий объект SAXParser, анализирует фактический XML.
Обычно это делается путем передачи URL-адреса методу XMLReader.Parse. Поскольку мой XML поступает из запроса POST к веб-службе, я сохраняю этот результат как строку, а затем использую StringReader/InputSource для передачи этой строки обратно в метод XMLReader.Parse.
Однако что-то странное происходит с 2001-м символом XMLstring.
Метод 'characters' обработчика документа вызывается ДВАЖДЫ между методами startElement и endElement, фактически разрывая мою строку (в данном случае название проекта) на две части. Поскольку я создаю экземпляры объектов в методе символов, я получаю два объекта вместо одного.
Эта строка, около 2000 символов в строке, запускает «символы» два раза, разрываясь между «Нижний» и «Уровень».
<title>SUMC-BOOKSTORE, LOWER LEVEL RENOVATIONS</title>
Когда я обхожу обходной путь StringReader/InputSource и передаю простой файл XML в XMLReader.Parse, он работает абсолютно нормально.
Что-то в StringReader и/или InputSource как-то портит ситуацию.
Вот мой метод, который принимает и анализирует строку XML через SAXParser.
public void parseXML(String XMLstring) {
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
xr.setContentHandler(this);
// Something is happening in the StringReader or InputSource
// That cuts the XML element in half at the 2001 character mark.
StringReader sr = new StringReader(XMLstring);
InputSource is = new InputSource(sr);
xr.parse(is);
} catch (IOException e) {
Log.e("CMS1", e.toString());
} catch (SAXException e) {
Log.e("CMS2", e.toString());
} catch (ParserConfigurationException e) {
Log.e("CMS3", e.toString());
}
}
Я был бы очень признателен за любые идеи о том, как не запускать «символы» дважды, когда я доберусь до этой точки в строке XML.
Или покажите мне, как использовать запрос POST и при этом передавать URL-адрес функции Parse.
СПАСИБО.