使用Serializer从XML(List in List)读入Java类

问题描述 投票:0回答:2

我没有这个例子的序列化,没有列表里面的列表

但是如果它在另一个列表中,则无法序列化xml列表。所有类的代码和xml如下:

阅读代码:

PaymentEBillList bills = null;
try {
    Serializer serializer = new Persister();
    bills = serializer.read(PaymentEBillList.class, output);
} catch (Exception e) {     

}

执行代码后,Bills列表为null

PaymentEBillList类:

@Root(name="ArrayOfPaymentBill")
public class PaymentEBillList {

    @ElementList(required=true, inline=true)
    public List<PaymentBill> list = new ArrayList<>();
}

PaymentBill类:

@Root(name="PaymentBill")
public class PaymentBill {
    @Element
    public String SerialNumber;
    @Element
    public String CustomerName;
    @Element
    public String TotalAmount;
    @Element
    public EBillList EBill;
    public PaymentBill()
    {
        super();
    }
    public PaymentBill(String SerialNumber, String CustomerName, String 
    TotalAmount,EBillList EBill) {
        super();
        this.SerialNumber = SerialNumber;
        this.CustomerName = CustomerName;
        this.TotalAmount = TotalAmount;
        this.EBill= EBill;
    }
}

EBillList类:

@Root(name="Bill")
public class EBillList {
    @ElementList(required=true, inline=true)
    public List<EBill> list = new ArrayList<>();
}

EBill类:

@Root(name="EBill")
public class EBill
{
    @Element
    public String NB;
    @Element
    public String Amount;
    public EBill()
    {
        super();
    }
    public EBill( String NB,String Amount) {
        super();
        this.NB = NB;
        this.Amount = Amount;
    }
}

XML:

<ArrayOfPaymentBill>
    <PaymentBill>
        <SerialNumber>1</SerialNumber>
        <CustomerName>XXX</CustomerName>
        <TotalAmount>4500.00</TotalAmount>
        <Bill>
            <EBill>
                <NB>1</NB>
                <Amount>2500.00</Amount>
            </EBill>
            <EBill>
                <NB>2</NB>
                <Amount>2000.00</Amount>
            </EBill>
        </Bill>
    </PaymentBill>
    <PaymentBill>
        <SerialNumber>2</SerialNumber>
        <CustomerName>YYY</CustomerName>
        <TotalAmount>2900.00</TotalAmount>
        <Bill>
            <EBill>
                <NB>1</NB>
                <Amount>2900.00</Amount>
            </EBill>
        </Bill>
    </PaymentBill>
</ArrayOfPaymentBill>

任何建议来解决这个问题

java android xml serialization xml-serialization
2个回答
0
投票

PaymentBill.java内你应该根据XML命名EBillList

@Element
public EBillList Bill;

或在注释中指定XML名称:

@Element(name = "Bill")
public EBillList EBill;

0
投票

对不起它的工作因为它的问题因为XML中的错误,因为Alexey编辑问题并修正了XML

© www.soinside.com 2019 - 2024. All rights reserved.