⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlserializer.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        return serializeCustom(object, document);    }    public static Element serializeCustom(Object object, Document document) throws SerializeException {        if (object instanceof Serializable) {            byte[] objBytes = UtilObject.getBytes(object);            if (objBytes == null) {                throw new SerializeException("Unable to serialize object; null byte array returned");            } else {                String byteHex = StringUtil.toHexString(objBytes);                Element element = document.createElement("cus-obj");                element.appendChild(document.createCDATASection(byteHex));                return element;            }        } else {            throw new SerializeException("Cannot serialize object of class " + object.getClass().getName());        }    }    public static Element makeElement(String elementName, Object value, Document document) {        if (value == null) return document.createElement("null");        Element element = document.createElement(elementName);        element.setAttribute("value", value.toString());        return element;    }    public static Object deserializeSingle(Element element, GenericDelegator delegator) throws SerializeException {        String tagName = element.getTagName();        if (tagName.equals("null")) return null;        if (tagName.startsWith("std-")) {            // - Standard Objects -            if ("std-String".equals(tagName)) {                return element.getAttribute("value");            } else if ("std-Integer".equals(tagName)) {                String valStr = element.getAttribute("value");                return Integer.valueOf(valStr);            } else if ("std-Long".equals(tagName)) {                String valStr = element.getAttribute("value");                return Long.valueOf(valStr);            } else if ("std-Float".equals(tagName)) {                String valStr = element.getAttribute("value");                return Float.valueOf(valStr);            } else if ("std-Double".equals(tagName)) {                String valStr = element.getAttribute("value");                return Double.valueOf(valStr);            } else if ("std-Boolean".equals(tagName)) {                String valStr = element.getAttribute("value");                return Boolean.valueOf(valStr);            } else if ("std-Locale".equals(tagName)) {                String valStr = element.getAttribute("value");                return UtilMisc.parseLocale(valStr);            } else if ("std-Date".equals(tagName)) {                String valStr = element.getAttribute("value");                DateFormat formatter = getDateFormat();                java.util.Date value = null;                try {                    synchronized (formatter) {                        value = formatter.parse(valStr);                    }                } catch (ParseException e) {                    throw new SerializeException("Could not parse date String: " + valStr, e);                }                return value;            }        } else if (tagName.startsWith("sql-")) {            // - SQL Objects -            if ("sql-Timestamp".equals(tagName)) {                String valStr = element.getAttribute("value");                return java.sql.Timestamp.valueOf(valStr);            } else if ("sql-Date".equals(tagName)) {                String valStr = element.getAttribute("value");                return java.sql.Date.valueOf(valStr);            } else if ("sql-Time".equals(tagName)) {                String valStr = element.getAttribute("value");                return java.sql.Time.valueOf(valStr);            }        } else if (tagName.startsWith("col-")) {            // - Collections -            Collection value = null;            if ("col-ArrayList".equals(tagName)) {                value = new ArrayList();            } else if ("col-LinkedList".equals(tagName)) {                value = new LinkedList();            } else if ("col-Stack".equals(tagName)) {                value = new Stack();            } else if ("col-Vector".equals(tagName)) {                value = new Vector();            } else if ("col-TreeSet".equals(tagName)) {                value = new TreeSet();            } else if ("col-HashSet".equals(tagName)) {                value = new HashSet();            } else if ("col-Collection".equals(tagName)) {                value = new LinkedList();            }            if (value == null) {                return deserializeCustom(element);            } else {                Node curChild = element.getFirstChild();                while (curChild != null) {                    if (curChild.getNodeType() == Node.ELEMENT_NODE) {                        value.add(deserializeSingle((Element) curChild, delegator));                    }                    curChild = curChild.getNextSibling();                }                return value;            }        } else if (tagName.startsWith("map-")) {            // - Maps -            Map value = null;            if ("map-HashMap".equals(tagName)) {                value = new HashMap();            } else if ("map-Properties".equals(tagName)) {                value = new Properties();            } else if ("map-Hashtable".equals(tagName)) {                value = new Hashtable();            } else if ("map-WeakHashMap".equals(tagName)) {                value = new WeakHashMap();            } else if ("map-TreeMap".equals(tagName)) {                value = new TreeMap();            } else if ("map-Map".equals(tagName)) {                value = new HashMap();            }            if (value == null) {                return deserializeCustom(element);            } else {                Node curChild = element.getFirstChild();                while (curChild != null) {                    if (curChild.getNodeType() == Node.ELEMENT_NODE) {                        Element curElement = (Element) curChild;                        if ("map-Entry".equals(curElement.getTagName())) {                            Element mapKeyElement = UtilXml.firstChildElement(curElement, "map-Key");                            Element keyElement = null;                            Node tempNode = mapKeyElement.getFirstChild();                            while (tempNode != null) {                                if (tempNode.getNodeType() == Node.ELEMENT_NODE) {                                    keyElement = (Element) tempNode;                                    break;                                }                                tempNode = tempNode.getNextSibling();                            }                            if (keyElement == null) throw new SerializeException("Could not find an element under the map-Key");                            Element mapValueElement = UtilXml.firstChildElement(curElement, "map-Value");                            Element valueElement = null;                            tempNode = mapValueElement.getFirstChild();                            while (tempNode != null) {                                if (tempNode.getNodeType() == Node.ELEMENT_NODE) {                                    valueElement = (Element) tempNode;                                    break;                                }                                tempNode = tempNode.getNextSibling();                            }                            if (valueElement == null) throw new SerializeException("Could not find an element under the map-Value");                            value.put(deserializeSingle(keyElement, delegator), deserializeSingle(valueElement, delegator));                        }                    }                    curChild = curChild.getNextSibling();                }                return value;            }        } else if (tagName.startsWith("eepk-")) {            return delegator.makePK(element);        } else if (tagName.startsWith("eeval-")) {            return delegator.makeValue(element);        }        return deserializeCustom(element);    }    public static Object deserializeCustom(Element element) throws SerializeException {        String tagName = element.getTagName();        if ("cus-obj".equals(tagName)) {            String value = UtilXml.elementValue(element);                                    if (value != null) {                byte[] valueBytes = StringUtil.fromHexString(value);                if (valueBytes != null) {                    Object obj = UtilObject.getObject(valueBytes);                    if (obj != null) {                        return obj;                    }                }            }            throw new SerializeException("Problem deserializing object from byte array + " + element.getTagName());        } else {            throw new SerializeException("Cannot deserialize element named " + element.getTagName());        }    }    /**     * Returns the DateFormat used to serialize and deserialize <code>java.util.Date</code> objects.     * This format is NOT used to format any of the java.sql subtypes of java.util.Date.     * A <code>WeakReference</code> is used to maintain a reference to the DateFormat object     * so that it can be created and garbage collected as needed.     *     * @return the DateFormat used to serialize and deserialize <code>java.util.Date</code> objects.     */    private static DateFormat getDateFormat() {        DateFormat formatter = null;        if (simpleDateFormatter != null) {            formatter = (DateFormat) simpleDateFormatter.get();        }        if (formatter == null) {            formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");            simpleDateFormatter = new WeakReference(formatter);        }        return formatter;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -