| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Java - SAXParser не сохраняет аррайлист((( ? |
| Автор: Wardrag 19.10.2011, 11:55 |
| Ребятки,спасайте,не работает(.Задача такая - пройтись по вложенным тегам и спарсить их в аррайлист в виде полей одного объекта.Допустим,такой пример: <myentry> <id>1</id> <name>Sergei</name> <address>Roy Street</address> <tel>55547458</tel> </myentry> Всё что между <myentry> и </myentry> нужно сохранить в аррайлист.Я решил воспользоваться сакспарсером,так как он показался мне куда проще чем остальные.Код для удобочитаемости закинул сюда: http://pastebin.com/hjutKAAP В течение парсинга он должен сохранять каждый новый объект после срабатывания нового события,но этого не происходит.Проблема возникла определить,где заканчивается нужный мне myentry,поэтому я закинул проверку в обработчик EndElement.Мб ещё какие-то варианты есть для решения,казалось бы,ну тривиальнейшей задачи ? Переделывать уже жутко неохота,а разобраться надо. |
| Автор: LSD 19.10.2011, 12:04 |
| Если коротко, то все неправильно |
| Автор: Wardrag 19.10.2011, 12:30 |
| Я вообще-то по нему и делал) Добавлено через 53 секунды http://www.quizful.net/post/sax-parser-java |
| Автор: LSD 19.10.2011, 13:41 |
| Я вообще про наш FAQ говорил. Как минимум у тебя неправильный endElement(). Плюс в примере и у тебя неправильный characters(). В characters() надо накапливать символы в буффер, а уже в endElement() присваивать конкретному полю. Добавлено через 2 минуты и 23 секунды Ну и конечно хранить список всех объектов в самом объекте это конечно оригинально |
| Автор: Wardrag 19.10.2011, 16:14 |
| Эх,лучше в лс отпишу) |
| Автор: LSD 20.10.2011, 14:43 | ||
|
| Автор: Wardrag 21.10.2011, 17:57 |
| Ох,интересно получилось )).А если нужно какой-то вложенный тег ещё и параллельно искать (взависимости от введенной команды в консоли,например,link 'http://ссылка' в консоли) ? Ведь это же каждый раз надо будет определять как-то,ввёл ли пользователь аргументы или нет,сколько их и производить поиск значения аргумента.Я понимаю,как это реализовать,но не понимаю,как это связать с парсингом,ведь он автоматом всё делать будет,т.е. отдельный метод в парсер не добавишь,он не будет вызван....? Если бы был свой owned парсер,то на вход функции поиска можно было бы передать аргументы и значения,какие надо искать,а как сделать здесь?( |
| Автор: LSD 24.10.2011, 12:02 |
| Что мешает добавить в SAXHandler дополнительную логику, чтобы он искал только теги с заданным именем, а все остальные ингорировал? |
| Автор: Welemir 24.10.2011, 13:47 |
| Автор: LSD 24.10.2011, 14:14 |
| Если у тебя есть XML, и надо последовательно выполнять к нему запросы. То имеет смысл распарсить его один раз в DOM, а дальше или вручную проходится по нему, или использовать XPath. |
| Автор: Wardrag 24.10.2011, 21:55 |
| Так почему не работает то ? |
| Автор: LSD 25.10.2011, 11:19 |
| Не работает что? |
| Автор: Wardrag 25.10.2011, 11:35 |
| Ладно,не важно ).Проблему оставил другим решать,больше мучить не буду. |