Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / как задать перевод на новую строчку в JaxB? / 4 сообщений из 4, страница 1 из 1
08.05.2013, 14:15:58
    #38251794
pumaworld
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как задать перевод на новую строчку в JaxB?
Добрый день.

Подскажите, пожалуйста, как задать перевод на новую строчку в JaxB.
У меня есть xml в котором строка <test>Test\r\n test.</test>
После разбора в объекте уже хранится строка Test\n test.

Проблема в том что когда я обратно преобразовываю с объектов в xml, то получаю уже:
<test>Test\n test.</test>
...
Рейтинг: 0 / 0
08.05.2013, 14:35:27
    #38251834
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как задать перевод на новую строчку в JaxB?
Стоит попробовать задать желаемый разделительч через -Dline.separator или System.setProperty("line.separator"). Последнее может не всегда сработать.
http://stackoverflow.com/questions/3708991/setting-java-vm-line-separator
...
Рейтинг: 0 / 0
08.05.2013, 14:55:16
    #38251873
pumaworld
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как задать перевод на новую строчку в JaxB?
Blazkowicz,

Спасибо за ответ.
Но эти опции применятся для всей виртуальной машины?
Мне нужно для уровня JaxB, а для виртуальной машины должно остаться стандартное.
...
Рейтинг: 0 / 0
08.05.2013, 15:35:01
    #38251949
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как задать перевод на новую строчку в JaxB?
В принципе, можно для поля / всех строчных полей задать адаптер:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
import javax.xml.bind.annotation.adapters.XmlAdapter;

public class StringAdapter extends XmlAdapter<String, String> {

	@Override
	public String unmarshal(String v) throws Exception {
		// тут заменяем \n на \r\n, код не пишу 
		...
		return v;
	}

	@Override
	public String marshal(String v) throws Exception {
		if (v==null || v.isEmpty()) return null;
		return v;
	}
}


Будет тупо переопределять все переносы на \r\n, возможно, достаточно для решения поставленной задачи.
Сам адаптер задаем с помощью аннотации, которую можно приписать полю/классу/пакету:
Код: java
1.
@XmlJavaTypeAdapter(value=StringAdapter.class,type=String.class)


Кстати, метод marshal в приведенном виде будет работать только для эклипсовской реализации, иначе надо возвращать не null, а пустую строку
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / как задать перевод на новую строчку в JaxB? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]