1 添加依赖
2 Domain1.java
3 CacheBehavior.java
4 TestDomain1.java
5 输出结果
6 结论
为啥会多个class="java.util.ArrayList",各种尝试无法去掉,有了解的道友请告诉我一下,谢谢!
<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">