XStream - 加载自定义XML

时间:2011-04-29 02:08:34

标签: java xml xstream xml-deserialization

我正在尝试加载以下格式的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>();
}

Record是一个具有公共成员变量ala的类:

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

当我尝试从上面读取XML时,它不会读取任何内容到MyCompany.Records成员变量中。

这样读取XML的正确方法是什么,以及如何忽略不存在成员变量的元素?

谢谢。

2 个答案:

答案 0 :(得分:2)

要处理@XStreamImplicit中的MyCompany注释,您需要先调用它:

m_XStream.processAnnotations(MyCompany.class);

或者代替注释,你可以这样做:

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

答案 1 :(得分:0)

使用@XStreamImplicit(itemFieldName =“Record”)而不是m_XStream.addImplicitCollection(MyCompany.class,“Records”,Record.class)来管理解决它