我有如下 XML:
<Temp NAME="bobo">
<elem1 />
<elem2>
<Attri1 ID="123" />
</elem2>
<elem3>
<Attri2 MOM="9" ID="7" SSS="2" />
</elem3>
<elem3>
<Attri3 MOM="44" ID="4" DSC="First Test"/>
</elem3>
</Temp>
我正在使用注释映射到 java 类:
@XmlRootElement(name = "Temp")
public class Temp {
@XmlElements({
@XmlElement(name="elem1",type=elem.class),
@XmlElement(name="elem2",type=elem.class)})
public ArrayList<elem> elms;
}
public class elem {
...
}
public class elem1 extends elem{
...
}
public class elem2 extends elem{
...
}
public class elem3 extends elem{
...
}
在每个元素中可以有很多属性。
有人可以帮我如何正确注释 java 类吗?
让我提出我的问题。 我需要从这个 XML 构建一个具有 3 个参数的 java 对象:第一个元素的名称 (p1)、子元素的名称 (p2)、映射值 (p3)。
上面的XML会生成如下4个java elem对象:
所有 java 对象类型都是 elem!
obj1 :
p1 = elem1
p2 = null
p3 = null
obj2 :
p1 = elem2
p2 = Attri1
p3 = map: key value
(ID, 123)
obj3 :
p1 = elem3
p2 = Attri2
p3 = map: key value
(MOM, 9)
(ID, 7)
(SSS, 2)
obj4 :
p1 = elem3
p2 = Attri3
p3 = map: key value
(MOM, 44)
(ID, 4)
(DSC, First Test)
提前致谢! 鲍里斯。
最佳答案
好吧,您需要为您的 xml 定义一个涵盖所有案例的架构定义。如果您确实需要动态结构,则需要使用键值对以不同的方式构建它。例如:
<属性>
<name >ID</name >
<value > 123</value >
或
< 属性名称="ID"值="123">
这将为您提供每个元素的属性集合。这可以在您的模式中表示。一旦你有了模式,你就可以生成或创建你的对象
关于java - JAXB 解码多态对象 - 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6806660/