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