【问题标题】:Read From XML (List inside List) into Java Class Using Serializer使用序列化器从 XML(列表中的列表)读取到 Java 类
【发布时间】:2018-06-07 04:33:42
【问题描述】:

我确实序列化与此示例相同,但列表中没有列表

但不能序列化 xml 以列出如果它在另一个列表中。所有类和 xml 的代码如下:

阅读代码:

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

}

执行代码后票据列表为空

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

电子账单类别:

@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>

任何解决此问题的建议

【问题讨论】:

  • 你能指定如何获得output 变量吗?

标签: java android xml serialization xml-serialization


【解决方案1】:

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

@Element
public EBillList Bill;

或在注解中指定 XML 名称:

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

【讨论】:

  • 它只是不适用于序列化程序,并且在 bills = serializer.read(PaymentEBillList.class, output);账单有空值..
【解决方案2】:

很抱歉,由于 XML 中的错误Alexey 编辑问题与 XML 更正

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多