![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| _Y_ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Что-то не получается у меня сохранить русский декст в dom4j XML документе. Пока документ формируется програмно, все в порядке, а при сохранении записывается ANSI файл вместо UML и русские буквы, естественно, сохраняются как вопросы.
Документ сохраняю вот так:
Сохраняется вот такой документ
Может быть надо где-то какие-то флаги ставить, о которых я напрочь забыл? Спасибо! ЗЫ: Кстати, еще одна заморочка. Почему-то вот этот валидатор ругается на элемент <root>. Другие валидаторы претензий не имеют. Но это, наверное, мелочь. Это сообщение отредактировал(а) _Y_ - 9.12.2012, 11:53 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||
|
|||||
| zergi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 31.10.2012 Репутация: нет Всего: нет |
||||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
zergi, спасибо, вроде работает.
Это сообщение отредактировал(а) _Y_ - 3.12.2012, 11:43 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| _Y_ |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
А вот и нет. Рано обрадовался. Русский текс сохраняет, зато навая ошибка полезла. Сохраняю вот такой XML документ (даже и без всякой кириллицы):
Если испльзую формат по дефолту:
Документ сохраняется без проблем. Если же, пользуюсь рекомендованным выше форматом:
Выдает ошибку:
Начинаю копаться в коде org.dom4j.io.XMLWriter - вроде бы находит в документе Node типа Text со строкой нулевой длины, что ему и не нравится, т.к. делает он вот такую операцию:
После нескольких эксериментов заподозрил (но не уверен), что недовольство вызывает XML элемент <PNode title="Level1".... Но почему? И почему проблема только если выбирается именно UNICOD? Подскажите, пожалуйста. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||||||||
|
|||||||||||
| zergi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 31.10.2012 Репутация: нет Всего: нет |
У меня приведенный XML отлично сохранился.
Как вы формируете сам документ в коде? |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
zergi, проект не маленький. Попробую ободрать его копию оставив только создание и сохранение документа. Может проблема и локализуется. А нет - будет код, пригодный к обсуждению. Но на это мне надо несколько дней.
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Оператор, вызывающий ошибку, я нашел. А вот почему она возникает - малопонятно. Вот полный код теста:
Ошибка возникает если разкомментировать оператор level1.setText(""); (строка 39). При этом если его раскоментировать, но вместо пустой строки вставить любую непустую, ошибки не будет. Странно как-то. Я всегда считал, что пустая строка так же легитимна, как и любая другая, в том числе и в UTF-8. Кстати, при отсутствии вложенных элементов, ошибка не возникает и с пустой строкой - оператор level2.setText(""); (строка 72) ошибки не дает. С удовольствием услышу мнение по причинам таких странных заморочек. Это сообщение отредактировал(а) _Y_ - 9.12.2012, 11:31 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| _Y_ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Я продолжил эксперименты, сильно упростил пример и надеюсь, что кто-то знает объяснение происходящих странностей. Пытаюсь сохранить вот такой документ в UTF-8 с помощью dom4j:
Использую вот такой код (тот же пример, что и раньше, но сильно упрощенный):
Т.е. документ сохраняется в два раза: как ANSI и как UTF-8. Но сохранение в UTF-8 выдат ошибку. Ошибка пропадает, если переменной textUnderInvestigation присвоить любое не-пустое значение. Теперь самое интересное. Ошибка пропадает даже если присвоить значение "\n", но при этом документ все равно записывается без переносов строки. Ну очень хочется, чтобы кто-нибудь объяснил мне. Почему возникают все эти странные заморочки? Я бы списал все на особенности dom4j, но почему такое происходит ТОЛЬКО при сохранении в UTF-8? -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||
|
|||||
| Pawl |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 7 Всего: 28 |
Объяснения этому я пока не знаю, НО, когда я в строке 55 код
заменил на
у меня все заработало прекрасно, и если textUnderInvestigation оставлять пустым и если туда что-то написать. Надо будет почитать docs по методу createPrettyPrint ну и по классу OutputFormat заодно. Возможно, разгадка кроется в описании конструктора OutputFormat():
А метод createPrettyPrint() - это
Если надо, чтобы было, к примеру,
Это сообщение отредактировал(а) Pawl - 9.12.2012, 13:45 -------------------- В действительности всё совсем не так, как на самом деле |
||||||||||||
|
|||||||||||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Спасибо. Подумаю над этим.
В том и шекспир, что в XML заголовке выводится UTF-8, но файл-то пишется в ANSI. В UTF-8 он пишется только вторым вариантом. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
![]()
|
| Правила форума "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. |