package com.iambookmaster.client.common; import java.sql.Timestamp; import java.util.Date; public class XMLBuilder extends JSONBuilder { public static final String FIELD_OBJECT = "item"; private static final String FIELD_OBJECT_END = "</item>"; public static XMLBuilder getStartInstance() { return new XMLBuilder(); } public XMLBuilder getInstance() { return new XMLBuilder(); } protected XMLBuilder() { buffer = new StringBuffer(); } public void reset() { rows = 0; buffer.delete(0, buffer.length()-1); newField = true; } protected void appendFieldName(String name) { buffer.append('<'); buffer.append(name); buffer.append(">"); } protected void endField(String name) { buffer.append("</"); buffer.append(name); buffer.append(">"); } protected void endChildArray() { buffer.append(FIELD_OBJECT_END); } public void child(String name,JSONBuilder value) { appendFieldName(name); buffer.append(value.toString()); endField(name); } public void childArray(String name,JSONBuilder value) { appendFieldName(name); buffer.append(value.toString()); endField(name); } public void childArray(String name, String childArray) { appendFieldName(name); buffer.append(childArray); endField(name); } public void field(String name,Object value) { appendFieldName(name); if (value instanceof Date) { buffer.append(((Date)value).getTime()); } else if (value instanceof Timestamp) { buffer.append(((Timestamp)value).getTime()); } else { buffer.append(encodeUTF2XML(String.valueOf(value))); } endField(name); } public static String encodeUTF2XML(String textString) { if (textString==null || textString.length()==0) { return textString; } return textString.replace("&", "&").replace("<", "<").replace(">", ">").replace("'", "'").replace("\"", """); } public void newRow() { if (rows>0) { endField(FIELD_OBJECT); } rows++; newField = true; appendFieldName(FIELD_OBJECT); } public String toString() { return buffer.toString()+(rows > 0 ? FIELD_OBJECT_END:""); } public String toXML() { return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+buffer.toString()+(rows > 0 ? FIELD_OBJECT_END:""); } }