有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在JAXB中指定对象引用数据类型

Java是否存在“XML模式类型到Java数据类型”的绑定。JAXB中的lang.Object

简单示例

    <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树解组为POJO的arraylist(列表)

然后在运行时,我想将java对象附加到ChannelHandler属性

我不想在EChannel POJO中手动执行任何操作,因为我希望使用xjc自动生成这些操作

谢谢


共 (1) 个答案

  1. # 1 楼答案

    在类型为Object的属性上使用@XmlAnyElement(lax=true)应该会提供您所寻找的行为

    当从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>
    

    了解更多信息