首页 文章

JAXB中可更改的XML结构?

提问于
浏览
3

我正在考虑创建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,所以把它们作为一个字段在课堂上是有点难看 .

1 回答

  • 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个字段 .

相关问题