我正在考虑创建XML文件的Java生成器,然后由另一个Java程序加载(我不能在那里更改代码)。显而易见的答案是JAXB,但我偶然发现了一个问题。
我希望XML可以更加自定义:
<HeadTag>
<firsElement>
<att1/>
<att2/>
<att3/>
</firsElement>
<secondElement>
<att3/>
<att4/>
<att5/>
<att6/>
</secondElement>
</HeadTag>
<HeadTag>
<firsElement>
<att1/>
<att2/>
<att3/>
</firsElement>
</HeadTag>
<HeadTag>
<secondElement>
<att3/>
<att4/>
<att5/>
<att6/>
</secondElement>
</HeadTag>
所有三个XML都是生成器的有效输出。我已经为fistElement,secondElement等创建了Java类(其中有很多),但我无法弄清楚如何在一个HeadTag元素下添加它们。
我有很多元素,超过500,所以把它们作为一个字段在课堂上是有点难看的。
答案 0 :(得分:1)
如果你能负担你的元素类来扩展抽象类,你可以试试这个:
@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;
}
您仍然会收到很多@XmlElement注释,但您的班级中不会有500多个字段。