代码之家  ›  专栏  ›  技术社区  ›  Trick

JiBX解组-有没有可能告诉JiBX忽略元素的顺序?

  •  5
  • Trick  · 技术社区  · 16 年前

    例如,我的XML:

    <group>
        <idExt>new group idext</idExt>
        <user-id>1</user-id>
        <parent-id>2</parent-id>        
    </group>
    

    解组时,不会出错,但更改顺序时:

    <group>
        <user-id>1</user-id>
        <parent-id>2</parent-id>
        <idExt>new group idext</idExt>
    </group>
    

    它失败了 org.jibx.runtime.JiBXException: Expected "group" end tag, found "idExt" start tag (line 4, col 2)

    public void toObject(Reader in, Object target) {
        try {
            IBindingFactory bf = BindingDirectory.getFactory(target.getClass());
            IUnmarshallingContext umc = bf.createUnmarshallingContext(); 
            umc.setDocument(in); 
            // This un-conditional cast is the current way that JibX unmarshalls to an // already instantiated object - YUCK 
            ((IUnmarshallable)target).unmarshal(umc); 
        } catch (JiBXException e) {
            throw new RuntimeException(e);
        }
    }
    

    <binding>       
        <mapping name="group" class="GroupVO" >
            <value name="id" field="id" usage="optional"/>
            <value name="idExt" field="idExt" usage="optional"/>
            <value name="active" field="active" usage="optional"/>
            <value name="created-at" field="dateCre" usage="optional"/>
            <value name="updated-at" field="dateChg" usage="optional"/>
            <value name="deleted-at" field="dateDel" usage="optional"/>
            <value name="user-id" field="userId" usage="optional" />
            <value name="parent-id" field="parentId" usage="optional" />
        </mapping>
    </binding>
    

    那么,JiBX有可能忽略标记顺序吗?

    1 回复  |  直到 16 年前
        1
  •  10
  •   Cheeso    16 年前

    ordered="false" 到绑定中的映射元素:

    <binding>        
        <mapping name="group" class="GroupVO" ordered="false"> 
            <value name="id" field="id" usage="optional"/> 
            <value name="idExt" field="idExt" usage="optional"/> 
            <value name="active" field="active" usage="optional"/> 
            <value name="created-at" field="dateCre" usage="optional"/> 
            <value name="updated-at" field="dateChg" usage="optional"/> 
            <value name="deleted-at" field="dateDel" usage="optional"/> 
            <value name="user-id" field="userId" usage="optional" /> 
            <value name="parent-id" field="parentId" usage="optional" /> 
        </mapping> 
    </binding> 
    

    the documentation for JiBX .