![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Не может этого быть, все эти классы есть в JDK 1.5 (они даже есть в JDK 1.4). Transforming XML Data with XSLT -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| check |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
||||
|
||||
| check |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Решил все-таки делать через SAX.
Вот класс, который выводит названия всех тегов и заключенные в них текстовые значения
Строковые поля объявленные в начале - это значения нескольких тегов которые, предположим , меня интересуют(на самом деле их конечно больше). Далее я должен эти поля поместить в массив, а массив передать в конструктор класса, пишущего в файл. Это конечно приблизительная схема, имя txt-файла будет определятся именем XML-я.
Вопрос в том как организовать в методе characters() присвоение текстовых значений тегов соответсвующим переменным. То есть если тег называется <ИНН>, берем его значение и помещаем в inn, и так далее. |
||||
|
|||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
check, сделай через HashMap. Ключом будет "inn", значением - соответственно, его значение.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| check |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Вроде бы они и извлекаются, но в файл пишутся переводы строки через запятую.
|
||||
|
|||||
| check |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Причина в том, что метод haracters()
вызывается для каждого тега и соответственно файл каждый раз перезаписывается тем что есть в массиве на данный момент. При последнем вызове, поскольку тег не подходит ни под одно из условий, массив пустой. Это сообщение отредактировал(а) check - 30.1.2007, 16:06 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Сделай запись в файл в обработчике endDocument (), и перейди на DocumentHandler.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| check |
|
||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Я вспомнил про метод endDocument(). Запись в файл я поместил туда, тобы она происходила один раз при достижении конца документа.
Но переменные которым в методе characters() присвоены значения:
в endDocument() пусты. Соответственно массив тоже пуст, а в файл пишутся квадраты через запятую Провёл такой эксперимент. При объявлении присвоил переменным начальные значения
При этом если их вывести в самом методе characters(), они имеют нормальные значения взятые из xml-я. Добавлено @ 17:45
Первое уже сделал. Что такое DocumentHandler? Это сообщение отредактировал(а) check - 30.1.2007, 20:24 |
||||||||||
|
|||||||||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Вместо:
используй:
По поводу первой проблемы, посмотри под отладчиком метод characters() вообще вызывается. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
| check |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Пришлось сделать так
В интерфейсе DocumentHandler нет метода parse(). Но ничего не изменилось. characters() вызывается
|
||||
|
|||||
| check |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Как сделать чтобы в файл добавлялись строки не пеезаписывая файл?
(да, плоховато я ещё знаю Java=)) Это нужно в любом случае, но я ещё чувствую, что это ключ к решению проблемы. Похоже на то, что метод characters() вызывается в любом случае более одного раза для каждого тега и при последнем вызове считывает то ли null, то ли перевод строки. Это сообщение отредактировал(а) check - 31.1.2007, 10:35 |
|||
|
||||
| check |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Нашел
Так и есть. Вот что пишется для в файл из такого тега: <СистемныйНомерМассиваПоручений>060-009-2006-00005</СистемныйНомерМассиваПоручений> Тег встречается в документе два раза
То есть получается - текст, потом два перевода строки. |
||||||
|
|||||||
| check |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Последовал совету - создал типизированный HashMap
Код теперь выглядит гораздо приятнее, хотя переводы строки в файл по-прежнему пишутся. Вопрос решён, большое спасибо! Это сообщение отредактировал(а) check - 31.1.2007, 23:22 |
||||
|
|||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |