object to xml
importjava.util.ArrayList; importjava.util.Iterator; importjava.util.List; /** *根据该对象可以构造Xml字符串 * * */ publicclassXmlObject{ privatestaticStringHEAD="<?xmlversion="1.0"encoding="utf-8"?>"; privateStringname; privateObjectvalue; privateList<Attribute>attributes; privateList<XmlObject>subXmlObjects; /** *根据name构造XmlObject *@paramname生成xml时标签名,如name="html",则生成xml为<html/> */ publicXmlObject(Stringname){ this.name=name; } /** *获得当前对象的名称 *@return返回当前对象的名称 */ publicfinalStringgetName(){ returnname; } /** *设置当前对象的名称 *@paramname给定名称 */ publicfinalvoidsetName(Stringname){ this.name=name; }
/** * 获得当前对象的值 * @return 返回当前对象的值 */ public final Object getValue() { return value; } /** * 设置当前对象的值 * @param value 给定值 */ public final void setValue(Object value) { this.value = value; } /** * 为当前XmlObject添加属性 * @param name 属性名 * @param value 属性值 */ public final void setAttribute(String name,Object value) { if (attributes == null) { attributes = new ArrayList<Attribute>(); } Attribute attribute = null; for (Attribute att : attributes) { if (name.equalsIgnoreCase(att.getName())) { attattribute = att; break; } } if (attribute == null) { attribute = new Attribute(name,value); attributes.add(attribute); } else { attribute.setValue(value); } } /** * 根据属性名称获得当前XmlObject对象的属性值 * @param name 属性名称 * @return 属性值 */ public final Object getAttributeValue(String name) { return getAttributeValue(name,null); } /** * 根据属性名称获得当前XmlObject对象的属性值 * @param name 属性名称 * @param defaultValue 默认值 * @return 若属性存在,则返回属性值,否则返回默认值 */ public final Object getAttributeValue(String name,Object defaultValue) { Attribute attribute = null; for (Attribute att : attributes) { if (name.equalsIgnoreCase(att.getName())) { attattribute = att; break; } } if (attribute == null) { return defaultValue; } else { return attribute.getValue(); } } /** * 为当前XmlObject对象添加子XmlObject对象 * @param xmlObject 给定XmlObject对象 */ public final void addSubXmlObject(XmlObject xmlObject) { if (subXmlObjects == null) { subXmlObjects = new ArrayList<XmlObject>(); } subXmlObjects.add(xmlObject); } /** * 构造当前对象的压缩XML字符串 * * @return XML字符串 */ public final String toCompactXml() { return HEAD + getNoHeadXml("",""); } /** * 根据格式化留白("t")和默认的行分隔符("t")构造当前对象的XML字符串 * * @return XML字符串 */ public String toFormatXml() { return toFormatXml("t"); } /** * 根据格式化留白和默认的行分隔符构("n")造当前对象的XML字符串 * * @param blank * 格式化留白 * @return XML字符串 */ protected final String toFormatXml(String blank) { return HEAD + "n" + getNoHeadXml(blank,"n"); } /** * 根据格式化留白和行分隔符构造当前对象的无头的XML字符串 * * @param blank * 格式化留白 * @param split * 行分隔符 * @return 无头的XML字符串 */ protected final String getNoHeadXml(String blank,String split) { return getNoHeadXml(blank,split,0); } private final String getNoHeadXml(String blank,String split,int count) { String blanks = ""; for (int i = 0; i < count; i++) {blanks += blank; } StringBuffer sb = new StringBuffer(); sb.append(blanks + "<" + name);if (attributes != null) { Iterator<Attribute> iterator = attributes.iterator(); while (iterator.hasNext()) { Attribute attribute = iterator.next(); sb.append(" " + attribute.getName() + "=""+ attribute.getValue() + """); }} if (subXmlObjects == null) { if (value == null) { sb.append("/>" + split); } else { sb.append(">"); sb.append(value); sb.append("</" + name + ">" + split); } } else { sb.append(">" + split); Iterator<XmlObject> iterator = subXmlObjects.iterator(); count += 1; while (iterator.hasNext()) { XmlObject xmlObject = iterator.next(); sb.append(xmlObject.getNoHeadXml(blank,count)); } sb.append(blanks + "</" + name + ">" + split); } return sb.toString(); } class Attribute { private String name; private Object value; public Attribute(String name,Object value) { this.name = name; this.value = value; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Object getValue() { return value; } public void setValue(Object value) { this.value = value; } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |