zoukankan      html  css  js  c++  java
  • 手动添加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();
    //        }
        }
    }
  • 相关阅读:
    final关键字
    Eclipse中web项目部署至Tomcat步骤
    tomcat动态部署和静态部署
    eclipse中导入MyEclipse的项目,不能添加到tomcat v6.0中
    【面向对象核心】动态绑定和多态
    java对象转型体现可扩展性
    java对象转型
    重写equals和toString例子
    equals的重写
    object类 & toString方法
  • 原文地址:https://www.cnblogs.com/zhangmingzhao/p/7100902.html
Copyright © 2011-2022 走看看