Java JAXB中的可变XML结构?
我正在考虑创建XML文件的Java生成器,然后由另一个Java程序加载这些文件(我不能在那里更改代码)。显而易见的答案是JAXB,但我偶然发现了一个问题 我希望XML更加可定制:Java JAXB中的可变XML结构?,java,xml,jaxb,Java,Xml,Jaxb,我正在考虑创建XML文件的Java生成器,然后由另一个Java程序加载这些文件(我不能在那里更改代码)。显而易见的答案是JAXB,但我偶然发现了一个问题 我希望XML更加可定制: 这三个XML都是生成器的有效输出。我已经为fistElement、secondElement等创建了Java类(有很多),但我不知道如何将它们全部添加到一个HeadTag元素下 我有很多元素,超过500个,所以把它们作为一个字段放在课堂上有点难看 如果您有能力让elements类扩展抽象类,您可以尝试以下方
这三个XML都是生成器的有效输出。我已经为fistElement、secondElement等创建了Java类(有很多),但我不知道如何将它们全部添加到一个HeadTag元素下
我有很多元素,超过500个,所以把它们作为一个字段放在课堂上有点难看 如果您有能力让elements类扩展抽象类,您可以尝试以下方法:
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class Element{};
@XmlAccessorType(XmlAccessType.FIELD)
public class FirstElement extends Element{ ... };
@XmlAccessorType(XmlAccessType.FIELD)
public class SecondElement extends Element{ ... };
//Other elements classes
@XmlRootEntity
@XmlAccessorType(XmlAccessType.FIELD)
public class HeadTag{
@XmlElements({
@XmlElement(name="firstElement",type=FirstElement.class),
@XmlElement(name="secondElement",type=SecondElement.class),
//One for each of your classes
})
private List<Element> elements;
}
@xmlacessortype(xmlacesstype.FIELD)
公共抽象类元素{};
@XmlAccessorType(XmlAccessType.FIELD)
公共类FirstElement扩展元素{…};
@XmlAccessorType(XmlAccessType.FIELD)
公共类SecondElement扩展元素{…};
//其他元素类别
@XmlRootEntity
@XmlAccessorType(XmlAccessType.FIELD)
公共类头牌{
@XmlElements({
@XmlElement(name=“firstElement”,type=firstElement.class),
@XmlElement(name=“secondElement”,type=secondElement.class),
//每个班一个
})
私有列表元素;
}
您仍然会有很多@XmlElement注释,但您的类中不会有500多个字段