手动添加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();
//        }
    }
}
时间: 2024-10-27 05:45:53

手动添加arraylist注解类(Contact联系人对象)的相关文章

Spring MVC常用的注解类

一.注解类配置 要使用springmvc的注解类,需要在springmvc.xml配置文件中用context:component-scan/扫描: ? 二.五大重要的注解类 1.RequestMapping注解 RequestMapping注解类的使用方法 在Controller控制器类的类定义和方法定义处都可以标注@RequestMapping注解 DispatcherServlet截获请求后,就可以通过控制器上的@RequestMapping提供的映射信息确定请求所对应的处理方法 packa

手动添加SSH支持、使用c3p0

之前做的笔记,现在整理一下:大家有耐心的跟着做就能成功: SSH(struts2.spring.hibernate) *  struts2 *  充当mvc的角色 *  hibernate dao层用hibernate技术来实现 *  spring *  spring的声明式事务管理 *  应用spring的IOC和di做到完全的面向接口编程 先添加一个数据库做测试用:使用的是mysql5.0 create database testoa default character set utf8;

JDK1.5的新特性:javabean、注解类、类加载器

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

java自定义注解类

一.前言 今天阅读帆哥代码的时候,看到了之前没有见过的新东西, 比如java自定义注解类,如何获取注解,如何反射内部类,this$0是什么意思? 于是乎,学习并整理了一下. 二.代码示例 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Tar

利用JavaScriptSerializer类 进行Json对象的序列化和反序列化和过滤

项目下载:JavaScriptSerializer_对JSON对象序列化与反序列化及过滤器 利用<JavascriptSerializer类> 进行Json对象的序列化和反序列化 1. 首先, JavascriptSerializer类所在名空间: using System.Web.Script.Serialization; 2. 相关的3篇文章, 标记下: 使用JavaScriptSerializer进行JSON序列化 注意:    是复杂对象. JSON是Javascript中常用的数据格

Xcode6中手动添加Precompile Prefix Header

Xcode5中创建一个工程的时候,系统会自动创建一个以以工程名为名字的pch(Precompile Prefix Header)文件,开发的过程中可以将广泛使用的头文件以及宏包含在该文件下,编译器就会自动的将pch文件中的头文件添加到所有的源文件中去,这样在需要使用相关类的时候不需要使用import就可以直接使用头文件中的内容,很大程度上给程序员带来了编程的便利性.但是在Xcode6中去掉Precompile Prefix Header文件. Xcode6去掉Precompile Prefix

手动生成WebService代理类

方式一: 手动生成WebService代理类需要把一句生成语句,如 wsdl.exe /l:cs /out:D:/ProxyServices.cs http://localhost/WebService.asmx 拷贝到Visual Studio 2008 命令提示窗口中去执行,这是一种办法. 方式二: 首先打开Visual Studio 2008,选择菜单"工具"-"外部工具"打开外部工具对话框,单击"添加"按钮添加新工具,然后在"标

@property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的

@property 的本质是什么? @property = ivar + getter + setter; 下面解释下: "属性" (property)有两大概念:ivar(实例变量).存取方法(access method = getter + setter). "属性" (property)作为 Objective-C 的一项特性,主要的作用就在于封装对象中的数据. Objective-C 对象通常会把其所需要的数据保存为各种实例变量.实例变量一般通过"

IOS 手动添加第三方库报错问题

当不想使用CocoaPods来管理和使用第三方库的时候,就需要手动添加和配置这些第三方库,难免会出现一些问题,主要问题汇总如下: 1.AFNetworking.NKNetWork.ZxingObjC等第三方库为了支持低版本的系统(IOS 5,6)会出现不能编译如下代码 @property (nonatomic, strong)dispatch_queue_t 这是因为,当IOS SDK版本>=6.0时,ARC会管理GCD对象,当IOS SDK版本<6.0时,GCD是需要手动管理的,兼容则需要写