Вот то, что я пытаюсь сделать:Полиморфные XML Binding с JAXB
XML заключается в следующем:
<Doctype1>
<Outter>
<Inner>
<ProblemType>
<foo>...</foo>
<baz>...</baz>
</ProblemType>
</Inner>
</Outter>
</Doctype1>
< - Тем не менее, у меня есть: ->
<Doctype2>
<Outter>
<Inner>
<ProblemType>
<blah>...</blah>
<whatever>...</whatever>
</ProblemType>
</Inner>
</Outter>
</Doctype1>
и Поделитесь большинством тех же полей, но в случае Doctype1 мне нужен ProblemType1, а в Doctype2 мне нужен ProblemType2.
Я хочу, чтобы иметь возможность повторно использовать классы, для которых я привязываю, и поскольку они являются общим тегом для всех типов документов.
@XmlAccessorType(XmlAccessType.FIELD)
public class Doc1{
@XmlElement(name = "Outter")
public List<Outter> outtards;
}
@XmlAccessorType(XmlAccessType.FIELD)
public class Outter {
@XmlElement(name = "Inner")
public List<Innard> innards;
}
@XmlAccessorType(XmlAccessType.FIELD)
public class Innard{
// need to change this if it's Doc1 or Doc2.
//The subtype of problem type needs to change based on DocX
// the element type name won't change
@XmlElement(name = "Inner")
public ProblemType subtype;
}
Похоже, что на заводе есть на заказ?
@XmlType(factoryClass= , factoryMethod=)
Не могли бы вы также разместить 'Doc2'? И лучше сделайте это ответом - не соглашайтесь с моим и принимайте ваше. (Подумайте о будущих читателях.) – lexicore
Готово. Не уверен, что это помогает будущим читателям, но хорошо. Я хочу дать вам реквизит для того, чтобы дать мне подтверждение. Я собираюсь продолжить изучение возможностей. –
Это * может * помочь и правильно делать. Отлично сработано. :) – lexicore