Для выполнения неких операций над текстовым содержимым тегов в XML-документе при его анмаршаллинге, предназначены XML-адаптеры, т.е. классы, наследуемые от javax.xml.bind.annotation.adapters.XmlAdapter. Для выполнения trim такой адаптер выглядит так (он выполняет trim как при маршаллинге, так и при анмаршаллинге):
public class StringTrimAdapter extends XmlAdapter<String, String> {Подключать адаптер можно как на уровне элемента:
@Override
public String unmarshal(String v) throws Exception {
if (v == null)
return null;
return v.trim();
}
@Override
public String marshal(String v) throws Exception {
if (v == null)
return null;
return v.trim();
}
}
@XmlElement(required=true)
@XmlJavaTypeAdapter(StringTrimAdapter.class)
String name;
, так и на уровне пакета, если требуется навесить адаптер на все классы пакета. Последнее выполняется в package-info.java этого пакета:
@XmlJavaTypeAdapter(value=StringTrimAdapter.class,type=String.class)
package my.package;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import my.package.adapters.StringTrimAdapter;
(здесь адаптер вышается на классы пакета my.package, а сам адаптер расположен в пакете my.package.adapters)
Комментариев нет:
Отправить комментарий