2013-12-15 16 views
5

Giả sử tôi có một tập tin xml rằng nên xem xét như thế này:Làm thế nào để (một phần) deserialize xml với các lỗi sử dụng 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> 

tôi phân tích nó sử dụng xStream và các lớp sau:

class ListXML { 
public List<ItemXML> list; 
} 

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

và mã sau:

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); 

Cho đến nay rất tốt. Tuy nhiên, bây giờ tôi tình cờ gặp một trường hợp tôi đã có xml sau như là đầu vào:

<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ó cách nào để thay đổi mã của tôi là "mạnh mẽ hơn", vì vậy tôi có thể có được giữ của các mục có id 123 và 345 mà không biết thẻ "aTagUnknownToMe"?

Trả lời

1

Có, bạn có thể.

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

hoặc

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

Những phương pháp có sẵn từ XStream 1.4.5.

Các vấn đề liên quan