public Element safeCreatePropertiesNode()

in src/main/java/com/aliyun/mns/model/serialize/XMLSerializer.java [98:135]


    public Element safeCreatePropertiesNode(Document doc, Map<String, ? extends AbstractMessagePropertyValue> map,
        String nodeName, String propertyNodeName) {
        if (map == null || map.isEmpty()) {
            return null;
        }
        Element propertiesNode = doc.createElement(nodeName);
        for (Map.Entry<String, ? extends AbstractMessagePropertyValue> entry : map.entrySet()) {
            Element propNode = doc.createElement(propertyNodeName);

            Element nameNode = safeCreateContentElement(doc, PROPERTY_NAME_TAG, entry.getKey(), null);
            if (nameNode != null) {
                propNode.appendChild(nameNode);
            }

            String valueString = entry.getValue().getStringValueByType();
            if (entry.getValue() instanceof MessagePropertyValue) {
                PropertyType propertyType = ((MessagePropertyValue) entry.getValue()).getDataType();
                if (propertyType == PropertyType.BINARY) {
                    // 防止特殊字符,使用base64编码
                    valueString = new String(Base64.encodeBase64(valueString.getBytes()));
                }
            }
            Element valueNode = safeCreateContentElement(doc, PROPERTY_VALUE_TAG,
                valueString, null);
            if (valueNode != null) {
                propNode.appendChild(valueNode);
            }

            Element typeNode = safeCreateContentElement(doc, PROPERTY_TYPE_TAG,
                entry.getValue().getDataTypeString(), null);
            if (typeNode != null) {
                propNode.appendChild(typeNode);
            }

            propertiesNode.appendChild(propNode);
        }
        return propertiesNode;
    }