2011-04-29 53 views
0

我試圖加載以下格式的XML文件:XStream的 - 加載自定義XML

<?xml version="1.0" encoding="ISO-8859-1"?> 
<MyCompany> 
    <Record> 
     <Surname> 
      Bird 
     </Surname> 
     <Given1> 
      Andrew 
     </Given1> 
     <ID> 
      225958 
     </ID> 
     <BirthDate> 
      260391 
     </BirthDate> 
     <PeerYear> 
      2009 
     </PeerYear> 
     <Title> 
     </Title> 
     <Preferred> 
      Andrew 
     </Preferred> 
     <Given2> 
      Macarthur 
     </Given2> 
     <CountryOfBirthCode> 
      AUS 
     </CountryOfBirthCode> 
     <NationalityCode> 
     </NationalityCode> 
     <OccupCode> 
      Retired 
     </OccupCode> 
     <Suburb> 
      Metung 
     </Suburb> 
     <State> 
      Vic 
     </State> 
     <PostCode> 
      3904 
     </PostCode> 
     <CountryCode> 
      AUS 
     </CountryCode> 
     <Phone> 
    </Record> 

我嘗試讀取,不能寫入該格式,所以我給自己定的別名如:

m_XStream.alias("MyCompany", MyCompany.class); 
m_XStream.alias("Record", Record.class); 

其中MyCompany正在:

public class Mycompany 
{ 
    @XStreamImplicit 
    public List<Record> Records = new ArrayList<Record>(); 
} 

和記錄是公共成員變量ALA類:

public class Record 
{ 
public String ID; 
public String Surname; 
} 

當我嘗試從上面的XML閱讀,它沒有讀什麼成MyCompany.Records成員變量。

什麼是正確讀取XML的方法,以及如何忽略不存在成員變量的元素?

謝謝。

回答

2

要處理@XStreamImplicit標註在MyCompany你需要首先調用這個:使用@XStreamImplicit

m_XStream.addImplicitCollection(MyCompany.class, "Records"); 
+0

謝謝WhiteFang34,我已經在做它通過: m_XStream.alias(「MyCompany」,MyCompany.class); m_XStream.alias(「Record」,Record.class); m_XStream.addImplicitCollection(MyCompany.class,「Records」); 我已經細讀了http://www.codeguru.com/forum/showthread.php?t=371569以供參考。 – 2011-04-29 02:45:54

+0

我設法讓它解析XML,但擴展XML包含Record類中不存在的元素。有什麼方法可以忽略這些元素?自定義XStream解串器? – 2011-04-29 02:55:15

+0

本文可能有所幫助:[使用XStream忽略意想不到的XML元素](http://pvoss.wordpress.com/2009/01/08/xstream/)。或者你可以添加成員字段,而不是使用它們。 – WhiteFang34 2011-04-29 02:58:49

0

設法解決它:

​​

或改爲註釋,你可以做到這一點的(itemFieldName =「Record」)而不是m_XStream.addImplicitCollection(MyCompany.class,「Records」,Record.class)