Подтвердить что ты не робот

Как настроить JAXB, чтобы обрезать пробелы при значении маркерного разметки?

Как настроить JAXB unmarshaller, чтобы он обрезал ведущие и завершающие пробелы из строк?

Например, рассмотрим простую привязку между Java bean и XML с помощью аннотаций JAXB:

@XmlRootElement(name="bean")
class Bean {

  @XmlElement(required=true)
  String name;

  @XmlElement(required=true)
  int number;
}

Я хотел бы иметь возможность развязать XML, приведенный ниже, поэтому bean.name не включает начальные и конечные пробелы - это " Мое имя", \n Мое имя \n ".

<bean>
  <name>
    My name
  </name>
  <number>1</number>
</bean>
4b9b3361

Ответ 1

Использовать пользовательский класс адаптера. Я думал, что NormalizedStringAdapter будет выполнять эту работу, но это только для unmarshaling, и он не делает того, что вы хотите в любом случае.

public class MyNormalizedStringAdapter extends XmlAdapter<String, String> {

    @Override
    public String marshal(String text) {
        return text.trim();
    }

    @Override
    public String unmarshal(String v) throws Exception {
        return v.trim();
    }
}

затем украсьте поле адаптером следующим образом:

@XmlElement(required=true)
@XmlJavaTypeAdapter(MyNormalizedStringAdapter.class)
String name;