Я разбираю xml-ответ, который имеет почти 90000 символов в приложении для Android, используя SaxParser. xml выглядит следующим образом:Почему некоторые символы отсутствуют, когда я разбираю тэг xml с помощью SaxParser?
<Registration>
<Client>
<Name>John</Name>
<ID>1</ID>
<Date>2013:08:22T03:43:44</Date>
</Client>
<Client>
<Name>James</Name>
<ID>2</ID>
<Date>2013:08:23T16:28:00</Date>
</Client>
<Client>
<Name>Eric</Name>
<ID>3</ID>
<Date>2013:08:23T19:04:15</Date>
</Client>
.....
</Registration>
Иногда парсер пропускает некоторые символы из тега даты. Вместо того, чтобы давать 2013: 08: 23T19: 04: 15 назад, он дает 2013: 08: 23T назад. Я пытался пропустить все пробелы из ответа XML строку, используя следующую строку кода:
responseStr = responseStr.replaceAll("\\s","");
Но тогда я получаю следующее исключение:
Parsing exception: org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 16: not well-formed (invalid token)
Ниже приведен код, я использую для синтаксического анализа:
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
public void startElement(String uri, String localName,String qName, Attributes attributes) throws SAXException {
tagName = qName;
}
public void endElement(String uri, String localName, String qName) throws SAXException {
}
public void characters(char ch[], int start, int length) throws SAXException {
if(tagName.equals("Name")){
obj = new RegisteredUser();
String str = new String(ch, start, length);
obj.setName(str);
}else if(tagName.equals("ID")){
String str = new String(ch, start, length);
obj.setId(str);
}else if(tagName.equals("Date")){
String str = new String(ch, start, length);
obj.setDate(str);
users.add(obj);
}
}
public void startDocument() throws SAXException {
System.out.println("document started");
}
public void endDocument() throws SAXException {
System.out.println("document ended");
}
};
saxParser.parse(new InputSource(new StringReader(resp)), handler);
}catch(Exception e){
System.out.println("Parsing exception: "+e);
System.out.println("exception");
}
Любая идея, почему парсер пропускает символы из тега и как я могу решить эту проблему. Заранее спасибо.
Где код? Ошибка в коде, а не в коде анализатора SAX. –
Я также добавил код. – Piscean
Только одно, что один и тот же код работает нормально, когда ответ меньше 60000 символов. Это никогда не создавало проблем – Piscean