2013-12-15 10 views
5

Supponiamo che io sono un file XML che dovrebbe essere simile a questo:Come (in parte) deserializzare XML con errori utilizzando xstream

<list> 
<item> 
    <id>123</id> 
    <name>someName</name> 
</item> 
<item> 
    <id>234</id> 
    <name>anotherName</name> 
</item> 
<item> 
    <id>345</id> 
    <name>aThirdName</name> 
</item> 
</list> 

ho analizzarlo utilizzando xstream e le seguenti classi:

class ListXML { 
public List<ItemXML> list; 
} 

class ItemXML { 
public String id; 
public String name; 
} 

e il seguente codice:

XStream xstream = new XStream(new DomDriver()); 
xstream.alias("list", ListXML.class); 
xstream.alias("item", ItemXML.class); 
xstream.addImplicitCollection(ListXML.class, "item"); 
ListXML result = (ListXML) xstream.fromXML(in); 

Fin qui tutto bene. Tuttavia, ora sono imbattuto in un caso in cui ho avuto il seguente codice XML come input:

<list> 
<item> 
    <id>123</id> 
    <name>someName</name> 
</item> 
<item> 
    <id>234</id> 
    <aTagUnknownToMe>blabla</aTagUnknownToMe> 
</item> 
<item> 
    <id>345</id> 
    <name>aThirdName</name> 
</item> 
</list> 

C'è un modo per cambiare il mio codice di essere "più robusti", in modo da poter entrare in possesso degli elementi con id 123 e 345 senza conoscere il tag "aTagUnknownToMe"?

risposta

1

Sì, è possibile.

XStream xstream = new XStream(); 
xstream.ignoreUnknownElements(); 

o

XStream xstream = new XStream(); 
xstream.ignoreUnknownElements("somePattern"); 

Tali metodi sono disponibili dal XStream 1.4.5.

Problemi correlati