Что является лучшим решением для маршалирования и демаршализации двух разных объектов с одинаковыми именами с использованием JAXB или другого решения. Я получаю часть этого класса из схемы. Мне нужно обработать обе версии "ext".
// JAXB Classes
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ContentType", propOrder = {
"ext",
"ext2"
})
public class ContentType {
@XmlElement(name = "Extensions", namespace = "urn_1")
protected urn_1.ExtensionsType ext;
@XmlElement(name = "Extensions", namespace = "urn_2")
protected urn_2.DianExtensionsType ext2;
@XmlAnyElement
protected Element any;
public Element getAny() {
return any;
}
/**
* Sets the value of the any property.
*
* @param value
* allowed object is
* {@link Element }
*
*/
public void setAny(Element value) {
this.any = value;
}
public ExtensionsType getExt() {
return ext;
}
public void setExt(ExtensionsType ext) {
this.ext = ext;
}
public ExtensionsType getExt2() {
return ext2;
}
public void setExt2(ExtensionsType ext2) {
this.ext2 = ext2;
}
}
package urn_1;
@XmlRegistry
public class ObjectFactory {
private final static QName _Extensions_QNAME = new QName("urn_1", "Extensions");
@XmlElementDecl(namespace = "urn_1", name = "Extensions")
public JAXBElement<ExtensionsType> createExtensions(ExtensionsType value) {
return new JAXBElement<ExtensionsType>(_Extensions_QNAME, ExtensionsType.class, null, value);
}
}
package urn_2;
@XmlRegistry
public class ObjectFactory {
private final static QName _Extensions_QNAME = new QName("urn_2", "Extensions");
@XmlElementDecl(namespace = "urn_2", name = "Extensions")
public JAXBElement<ExtensionsType> createExtensions(ExtensionsType value) {
return new JAXBElement<ExtensionsType>(_Extensions_QNAME, ExtensionsType.class, null, value);
}
}
То, что я хочу, выглядит так: JAXB @XmlElements, разные типы, но с одинаковым именем?
но в моем случае мои классы Extension - это две разные версии, и они не являются расширением другой.
Я пытаюсь изменить имена, чтобы установить различия между версиями "ext" и "ext2", но я не могу правильно маршалировать или деархивировать XML-файл, я прекращаю пропускать элементы, если я изменяю имя с '@XmlElement (name = "Extensions")'.
Также я пытался использовать элемент «any», но я не знаю, как создать такой объект.