И это не '&'
Я использую объект SAXParser для синтаксического анализа фактического XML.
Обычно это делается путем передачи URL-адреса методу XMLReader.Parse.
Поскольку мой XML поступает из запроса POST к веб-службе, я сохраняю этот результат в виде строки, а затем использую StringReader / InputSource для передачи этой строки обратно в метод XMLReader.Parse.
Однако, что-то странное происходит с 2001-м символом строки XML.
Метод «символов» обработчика документа вызывается TWICE между методами startElement и endElement, эффективно разбивая мою строку (в данном случае заголовок проекта) на две части. Поскольку я создаю объекты в методе символов, я получаю два объекта вместо одного.
Эта строка, около 2000 символов в строке, запускает «символы» два раза, пробивая между «Lower» и «Level»
<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.
СПАСИБО.