手动添加arraylist注解类(Contact联系人对象)

因为在Java核心库不支持arraylist xml直接注解,这里可以自己写个小工具类

Contact.java:

package com.newer.xml;

import java.util.ArrayList;

import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;

// 根节点
@Root(name = "person")
public class Contact {

    @Attribute
    int id;

    @Element
    String name;

    @ElementList(inline = true, entry = "phone", required = false)
    ArrayList<String> phoneList = new ArrayList<>();

    public Contact() {
    }

    public Contact(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return "Contact [id=" + id + ", name=" + name + ", phoneList=" + phoneList + "]";
    }

}

 

工具列ContactList.java:

package com.newer.xml;

import java.util.ArrayList;

import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;

// 注解
@Root(name = "contact-list")
public class ContactList {
    
    // 委托
    @ElementList(inline = true)
    ArrayList<Contact> contacts = new ArrayList<>();
    
    public void add(Contact c) {
        contacts.add(c);
    }
    
    public Contact get(int i) {
        return contacts.get(i);
    }

}

运行的开始Demo.java:

注意required属性设置false说明当前属性是可空的

这里先写如,然后注释,再读取,当然可以仿照案例直接写在控制台方便查看效果:

package com.newer.xml;

import java.io.File;
import java.util.ArrayList;

import org.simpleframework.xml.core.Persister;

public class Demo {

    
    public static void main(String[] args) {
        
        Persister pr = new Persister();
        
        try {
            ContactList list = pr.read(ContactList.class, new File("c.xml"));
            
            for (Contact c : list.contacts) {
                System.out.println(c);
            }
        
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
        
        
//        Contact c1 = new Contact(1, "alice");
//        c1.phoneList.add("131");
//        c1.phoneList.add("139");
//        
//        Contact c2 = new Contact(2, "bob");
//        Contact c3 = new Contact(3, "jack");
//        c3.phoneList.add("1");
//        c3.phoneList.add("2");
//        c3.phoneList.add("3");
//        c3.phoneList.add("4");
//        
//        ContactList list = new ContactList();
//        list.add(c1);
//        list.add(c2);
//        list.add(c3);
//        
//        
//        Persister pw = new Persister();
//        
//        try {
//            pw.write(list, new File("c.xml"));
//            
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }
}

 

转载于:https://www.cnblogs.com/zhangmingzhao/p/7100902.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值