我有以下 XML,对于每个 XML,我都有用 JAXB 建模的相应 Java 类。
XML 1:
<counts at="2019-06-27 09:54:31">
<media id="1" start="1" finish="1000" timeZone="NZST">
<count id="1" value="1" at="2019-06-27 09:54:31" duration="5"/>
<count id="2" value="2" at="2019-06-27 09:54:31" duration="5"/>
<count id="3" value="3" at="2019-06-27 09:54:31" duration="5"/>
</media>
</counts>
XML 2:
<tags at="2019-06-27 09:54:31">
<media id="1" start="1" finish="1000" timeZone="NZST">
<tag id="1" value="1" at="2019-06-27 09:54:31" visible="true" />
<tag id="2" value="2" at="2019-06-27 09:54:31" visible="true" />
<tag id="3" value="3" at="2019-06-27 09:54:31" visible="true" />
</media>
</tags>
XML 3:
<trajectories at="2019-06-27 09:54:31">
<media id="1" start="1" finish="1000" timeZone="NZST">
<trajectory id="1" value="1" at="2019-06-27 09:54:31" />
<trajectory id="2" value="2" at="2019-06-27 09:54:31" />
<trajectory id="3" value="3" at="2019-06-27 09:54:31" />
</media>
</trajectories>
由于所有 XML 中的大多数元素都或多或少相同,除了<count>, <tag> and <trajectory>. 有没有办法抽象类<counts>, <tags>, <trajectories> and <media>?
理想情况下,我想要类似的东西:
class CountsTagsTrajectories<T extends CommonObjectsOfMedia> {
private Media<T> media;
}
class Media<T> {
private List<T> listOfObjects;
}
class Count extends CommonObjectsOfMedia {
...
...
...
}
class Tag extends CommonObjectsOfMedia {
...
...
...
}
class Trajectory extends CommonObjectsOfMedia {
...
...
...
}
这种方法可行吗?或者我必须有这样的课程:
Counts > CountMedia > Count
Tags > TagMedia > Tag
Trajectories > TrajectoryMedia > Trajectory
我现在尝试抽象类时面临的问题是我需要在@XmlElement 中定义一个名称,无论是计数/计数、标签/标签还是轨迹/轨迹。
注意:我看过这篇文章,但它的作用是将所有可能的“CommonObjectsOfMedia”列表添加到 Media 类中,这不是我想要的。