| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Ошибки парсинга XML файлов |
| Автор: zone51 30.12.2006, 03:37 | ||
Здравствуйте. У меня проблема. Есть код, разбирающий хмл файл
Этот код не срабатывает, как будто файл просто не парсируется-в процедуры не передаютсяя нужные параметры. Подскажите. Спасибо. |
| Автор: y3u 30.12.2006, 12:30 | ||||
| что значит "не срабатывает"? опиши подробнее... и прицепи XMLник... на вскидку
это неправильно, там массив символов всего документа, думаешь зачем тебе там приходит в параметре int start, int length ? надо делать примерно так
|
| Автор: LSD 30.12.2006, 13:15 |
Только промежуточный буфер не нужен. |
| Автор: zone51 30.12.2006, 13:32 | ||
| y3u, Спасибо большое, все получилось LSD,
А как это? Прямо в одну строку в ретурне и перегонять в строку массив? |
| Автор: LSD 30.12.2006, 13:36 | ||||
Нет, просто вместо:
достаточно:
|
| Автор: sergejzr 30.12.2006, 13:37 |
| zone51, пожалуйста пиши грамотно! ПС: Переименовал тему "Ошибки парсинга XML файлв, Необходимо разобрацца"->"Ошибки парсинга XML файлв, Необходимо разобраться" |
| Автор: y3u 30.12.2006, 13:37 |
| ... век живи - век учись там, вобщем-то, так же работает все |
| Автор: Hidrag 9.1.2007, 21:05 | ||||||||
Встала задача парсинга XML, в факе почитал статью "Парсинг XML с помощью SAX парсера", все понятно и работает, там пример хмла такой:
а вот как распарсить вот такой файл:
вроде бы тот же самый файл, только тэги и данные на разных строчках и кодировка другая... код из фака который получает стоку данных:
так вот при парсинге этого файла стринг получается состоит из 3-х (трех!!!) строк, то есть уже не строка а текст из трех строчек разделенных символом перевода строки в одном стринге (и как такое возможно? я думал стринг это одна строка), первая строка состоит из символа переноса строки, вторая строка из пробелов и той самой строки которая и нужна, и третья строка из пробелов от края до закрывающего тэга... Пришло две мысли как это вылечить, либо распарсить эту строку и удалить в ней ненужные пробелы и символы переноса строк, второе решение это обработать сам хмльник и удалить в нем все символы переноса строк... но как мне кажется это "корявое" решение, не полдскажете как грамотнее распарсить такой файл? .. и если все же удалять символы переноса строки как правильно сделать? Я сделал так:
но он удалят эти символы как будто через строку... в одной удалит в другой пропустит, что я не так делаю?... |
| Автор: batigoal 10.1.2007, 11:11 |
Это одна строка, но содержащая в себе символы \n. У DOM-парсера есть метод setIgnoringElementContentWhitespace(), но в SAX-парсинге я его не нашел... |
| Автор: y3u 10.1.2007, 11:32 |
| ну, вобщем-то, в сакс модели дже отнормалайзить дерево не получится... поэтому, имхо, вполне себе нормальный выход, зачитывать строку, а потом просто дергать у нее метод trim(), который обрежет все вайтспейсы со строки, в том числе и переносы... |
| Автор: Hidrag 10.1.2007, 20:18 | ||
Решил седня проблему так: использовал вместо сакса дом. Трим к строке использовать нельзя, там может храниться фраза а не одно слово, а чтобы убрать все лишнее использовал регулярное выражение, вот такое:
которое обрубает все лишнее в начале и конце строки. Где s полученная строка данных. |
| Автор: y3u 10.1.2007, 22:45 |
| trim() обрезает все в начале и в конце строки целиком... при чем тут фраза |
| Автор: Hidrag 10.1.2007, 23:07 |
| y3u, Проверил и правда... а я думал он только пробелы удаляет... |
| Автор: tigerkvv 14.12.2010, 17:38 | ||||
Продолжение. Как парсить вот такой файл:
вышеописанный метод
от <userParam> оставляет только "\nParam 1.2\n" и "\nParam 2.2\n" куда пропадают "\nParam 1.1\n" и "\nParam 2.1\n" ? |
| Автор: LSD 14.12.2010, 18:41 |
В FAQ есть статья на тему как правильно парсить XML с помощью SAX. |
| Автор: tigerkvv 15.12.2010, 18:26 |
| Спасибо за ответ. С той статьей я знакомился и тот код отлично работает для файла из примера, но для моего файла тод код выдает только последнюю строчку из многострочного параметра. Возможно есть что-то в комментариях, но мне их не видно (я зарегистрирован), видно только даты комментариев. |
| Автор: LSD 16.12.2010, 14:58 | ||
Там в FAQ не совсем корректный код, более правильно так:
|