у меня такая ситуация
@XmlType(name ="", propOrder={"value"})
@XmlRootElement(name = "compound")
public class Compound extends Value {
@XmlElements({
@XmlElement(name="simple", type=Simple.class),
@XmlElement(name="compound", type=Compound.class)
})
protected List<Value> value;
// ...
}
Таким образом, соединение представляет собой список как простых, так и / или составных. Оба простираются от значения, которое определяется как
public abstract class Value implements Serializable {}
Simple — это класс, помеченный адаптером для маршалинга/демаршалирования в/из простой строки.
@XmlJavaTypeAdapter(SimpleAdapter.class)
public class Simple extends Value {
private java.lang.String simple;
// ...
}
Соединение не нуждается в адаптере.
Проблема в том, что если я использую Simple «как есть», он правильно маршалирует/демаршалирует как
<simple>my.text.here</simple>
но если я использую его внутри соединения, он выводит что-то вроде
<compound>
//...
<simple>
<value>my.text.here</value>
</simple>
//...
</compound>
И мне просто интересно, почему... Я что-то пропустил? Как я могу удалить это «значение»? Мне кажется, что Адаптер вообще не используется, можно ли использовать адаптеры в типах, отмеченных внутри @XmlElements?
ИЗМЕНИТЬ
После нескольких тестов я обнаружил, что проблема может заключаться в том, как я обрабатываю экземпляр Simple. Поэтому я упрощаю свой первоначальный вопрос:
Учитывая простой класс, например
@XmlRootElement("simple")
public class Simple {
private java.lang.String innerText;
// getters/setters
}
как я могу получить упорядоченный вывод, например
<simple>
my.inner.text.here
</simple>
вместо
<simple>
<value>my.inner.text.here</value>
</simple>
?
Compound
, иSimple
наследуются отValue
, но это не отражено в их определениях. - person Grzegorz Oledzki   schedule 22.05.2011Compound
, равен<simple><value>my.text.here</value></simple>
, а не<simple><simple>my.text.here</simple></simple>
? Я бы понял последнее, но я не понимаю, почему произошло бы первое. Где определено имя элементаvalue
? - person Grzegorz Oledzki   schedule 23.05.2011