2014-02-06 39 views
0

我正在反序列化一些XML,我希望能夠輕鬆處理格式略有不同的版本。我是這種XML的消費者,我無法控制格式以使我的工作更輕鬆。該XML的一個版本包含了這樣的內容:SimpleFramework反序列化可以跳過任意深度嗎?

<food> 
    <entry name="thing1"> 
    <member>apple</member> 
    </entry> 
    <entry name="thing2"> 
    <member>orange</member> 
    </entry> 
</food> 

我有這樣的一個註解類來分析它:

@Root(strict=false) public static class Food { 
    @Attribute public String name; 
    @ElementList(entry="member", inline=true) public List<String> members; 
} 

到目前爲止好。今天,我發現這個XML的製片人也可以給我這個代表相同的信息:現在

<food> 
    <name>fruits</name> 
    <entry name="thing1"> 
    <baz> 
     <member>apple</member> 
    </baz> 
    </entry> 
    <entry name="thing2"> 
    <baz> 
     <member>orange</member> 
    </baz> 
    </entry> 
</food> 

該元素是成員進入和之間。如果可能的話,我想要一個可以處理這兩種格式的註釋食品類。這些感覺就像SimpleFramework可以輕鬆處理的,但通過文檔搜索並沒有幫助我。我希望這裏有人知道答案。

如果非要我知道我可以用另一種方法檢測到這種新的模式,然後切換到一個完全不同的一套註解的類,但差異足夠小,我試圖避免這種情況。

回答

0

它是否可以將可能的元素添加到您的課程設置required = false

Btw。總會有一個回退解決方案:實施ConverterExample)。

+0

除非我誤解「required = false」,我不明白它有什麼用處。我想結束食物POJO中的「成員」成員,並且我想要它解析元素是的直接子元素還是的子元素,它是的子元素。我會看看Converter – kbyrd

相關問題