JAXB中的 java.lang.Object 是否存在“Java数据类型的XML模式类型”绑定?
简单示例
<Channels>
<EChannel>
<Number>1</Number>
<Format>0</Format>
<VarNumber>11</VarNumber>
<Name>First Channel</Name>
<ChannelHandler></ChannelHandler>
</EChannel>
<EChannel>
<Number>2</Number>
<Format>0</Format>
<VarNumber>22</VarNumber>
<Name>Second Channel</Name>
<ChannelHandler></ChannelHandler>
</EChannel>
</Channels>
基本上我首先将xml树解组为Pojos(List)的arraylist
然后在运行时我想将一个java对象附加到ChannelHandler属性。
我不想在EChannel POJO中手动执行任何操作,因为我希望使用xjc自动生成这些内容
由于
答案 0 :(得分:1)
在@XmlAnyElement(lax=true)
类型的属性上使用Object
可以为您提供所需的行为。
从XML模式开始时,如下所示的模式结构将导致此批注。
<xs:element name="ChannelHandler">
<xs:complexType>
<xs:sequence>
<xs:any processContents="lax"/>
</xs:sequence>
</xs:complexType>
</xs:element>
完整的XML架构
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Channels">
<xs:complexType>
<xs:sequence>
<xs:element name="EChannel" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Number" type="xs:int"/>
<xs:element name="Format" type="xs:int"/>
<xs:element name="VarNumber" type="xs:int"/>
<xs:element name="Name" type="xs:string"/>
<xs:element name="ChannelHandler">
<xs:complexType>
<xs:sequence>
<xs:any processContents="lax"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:any/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
了解更多信息