Как настроить JAXB, чтобы он урезал пробелы при демаршаллинге значения тега? - PullRequest
10 голосов
/ 11 декабря 2008

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

Например, давайте рассмотрим простую привязку между Java-бином и 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>

1 Ответ

6 голосов
/ 11 декабря 2008

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

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...