2013-10-23 54 views
1

我使用org.jibx.runtime.impl.UnmarshallingContext.unmarshalDocument(java.io.Reader rdr)類來取消編組我的xml。JIBX綁定鬆散xml結構

這是我工作的綁定圖。

<?xml version="1.0" encoding="UTF-8"?> 

    <binding xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
     <mapping name="md" class="com.mycompany.metadata.JiBXMetadata" ordered="false"> 
      <value name="alice" field="aliceStr" style="element" usage="optional"/> 
      <value name="bob" field="bobStr" style="element" usage="optional"/> 
      <value name="carol" field="carolStr" style="element" usage="optional"/> 
     </mapping> 
    </binding> 

因此,如果XML有任何順序的任何節點愛麗絲,鮑勃或卡羅爾它的工作就好了。如果有任何節點從xml中丟失,它仍然可以正常工作。但是如果在xml中有一個額外的節點(比如說史蒂夫),那麼我會得到一個JiBXException。

有沒有辦法讓unmarshaller忽略任何不在綁定映射中的節點?

回答

0

添加靈活選項可能會有幫助。你可以嘗試添加靈活的屬性到你的映射如下?

<binding xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <mapping name="md" class="com.mycompany.metadata.JiBXMetadata" ordered="false"> 
     <value name="alice" field="aliceStr" style="element" usage="optional" flexible="true"/> 
     <value name="bob" field="bobStr" style="element" usage="optional" flexible="true"/> 
     <value name="carol" field="carolStr" style="element" usage="optional" flexible="true"/> 
    </mapping>