simple-xml使用

1 添加依赖
		<dependency>
		    <groupId>org.simpleframework</groupId>
		    <artifactId>simple-xml</artifactId>
		    <version>2.7.1</version>
		</dependency>

2 Domain1.java


import java.util.ArrayList;
import java.util.List;

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

@Root(name="domain")  
public class Domain1 {
	@Element(name = "domain-id",required = false)
    private String domainId;
	
	@Element(name = "domain-name",required = false)
    private String domainName;

	@Element(name = "cname",required = false)
    private String cname;

	@Element(name = "enabled",required = false)
    private boolean enabled;

	@ElementList(name="cache-behaviors" , type = CacheBehavior.class, required = false)
    private List<CacheBehavior> cacheBehaviors;

    public void setDomainId(String domainId) {
        this.domainId = domainId;
    }

    public String getDomainId() {
        return domainId;
    }

    public void setDomainName(String domainName) {
        this.domainName = domainName;
    }

    public String getDomainName() {
        return domainName;
    }

    public String getCname() {
        return cname;
    }

    public void setCname(String cname) {
        this.cname = cname;
    }
    public boolean isEnabled() {
        return enabled;
    }

    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }

    public void addCacheBehavior(CacheBehavior item) {
        if (cacheBehaviors == null) {
            cacheBehaviors = new ArrayList<CacheBehavior>();
        }
        cacheBehaviors.add(item);
    }

    public List<CacheBehavior> getCacheBehaviors() {
        return cacheBehaviors;
    }

    public void setCacheBehaviors(List<CacheBehavior> cacheBehaviors) {
        this.cacheBehaviors = cacheBehaviors;
    }



3 CacheBehavior.java


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

@Root(name="cache-behavior")  
public class CacheBehavior {
	@Element(name = "path-pattern",required = false)
	private String pathPattern;
	
	@Element(name = "ignore-cache-control",required = false)
	private Boolean ignoreCacheControl;

	@Element(name = "cache-ttl",required = false)
	private long cacheTtl = -1;
	
	@Element(name = "cache-unit",required = false)
	private String cacheUnit="s";

	@Element(name = "priority",required = false)
	private Integer priority;

	public String getPathPattern() {
		return pathPattern;
	}

	public void setPathPattern(String pathPattern) {
		this.pathPattern = pathPattern;
	}

	public Boolean isIgnoreCacheControl() {
		return ignoreCacheControl;
	}

	public void setIgnoreCacheControl(boolean ignoreCacheControl) {
		this.ignoreCacheControl = ignoreCacheControl;
	}

	public long getCacheTtl() {
		return cacheTtl;
	}

	public void setCacheTtl(long cacheTtl) {
		if(cacheTtl < 0){
			cacheTtl = 0;
		}
		this.cacheTtl = cacheTtl;
	}

	public String getCacheUnit() {
		return cacheUnit;
	}

	public void setCacheUnit(String cacheUnit) {
		this.cacheUnit = cacheUnit;
	}
	
	public Integer getPriority() {
		return priority;
	}

	public void setPriority(Integer priority) {
		this.priority = priority;
	}
	
	
}


4 TestDomain1.java

import java.io.ByteArrayOutputStream;

import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;


public class TestDomain1 {
	public static void main(String[] args) {
		Domain1 domain = new Domain1();
		domain.setDomainName("http://baidu.com");

		CacheBehavior cache = new CacheBehavior();
		cache.setPathPattern("jpg;gif");
		cache.setCacheTtl(10);
		cache.setIgnoreCacheControl(false);
		cache.setPathPattern("/(i|i2)/.*\\.(jpg|jpg2)");
		domain.addCacheBehavior(cache);
		domain.addCacheBehavior(cache);

        Serializer serializer = new Persister(); 
        try{
        	ByteArrayOutputStream baos = new ByteArrayOutputStream();
            serializer.write(domain, baos);
            String xml = baos.toString("UTF-8");
            System.out.println(xml);
            
            Domain1 domain1 = serializer.read(Domain1.class,xml);
            System.out.println(domain1.getDomainName());
        }catch(Exception e){
        	e.printStackTrace();
        }
    }


5 输出结果
<domain>
   <domain-name>http://baidu.com</domain-name>
   <enabled>false</enabled>
   <cache-behaviors class="java.util.ArrayList">
      <cache-behavior>
         <path-pattern>/(i|i2)/.*\.(jpg|jpg2)</path-pattern>
         <ignore-cache-control>false</ignore-cache-control>
         <cache-ttl>10</cache-ttl>
         <cache-unit>s</cache-unit>
      </cache-behavior>
      <cache-behavior>
         <path-pattern>/(i|i2)/.*\.(jpg|jpg2)</path-pattern>
         <ignore-cache-control>false</ignore-cache-control>
         <cache-ttl>10</cache-ttl>
         <cache-unit>s</cache-unit>
      </cache-behavior>
   </cache-behaviors>
</domain>
http://baidu.com



6 结论
为啥会多个class="java.util.ArrayList",各种尝试无法去掉,有了解的道友请告诉我一下,谢谢!
<cache-behaviors class="java.util.ArrayList">

猜你喜欢

转载自zgax.iteye.com/blog/2337101