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;
}