XStream - загрузка пользовательских XML - PullRequest
0 голосов
/ 29 апреля 2011

Я пытаюсь загрузить файл 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 ]

2 голосов
/ 29 апреля 2011

Чтобы обработать аннотацию @XStreamImplicit в MyCompany, сначала нужно вызвать ее:

m_XStream.processAnnotations(MyCompany.class);

Или вместо аннотации вы можете сделать это:

m_XStream.addImplicitCollection(MyCompany.class, "Records");
0 голосов
/ 29 апреля 2011

Решил проблему, используя @XStreamImplicit (itemFieldName = "Record") вместо m_XStream.addImplicitCollection (MyCompany.class, "Records", Record.class)

...