private void parseNodeAttr(NamedNodeMap nodeMap, Map<String, Object> map,
			String parentKey) {
		if (null == nodeMap || nodeMap.getLength() < 1) {
			return;
		}
		for (int i = 0; i < nodeMap.getLength(); i++) {
			Node node = nodeMap.item(i);
			if (null == node) {
				continue;
			}
			if (node.getNodeType() == Node.ATTRIBUTE_NODE) {
				if (StringUtils.isEmpty(node.getNodeName())) {
					continue;
				}
				if (StringUtils.isEmpty(node.getNodeValue())) {
					continue;
				}
				map.put(String.join(AbstractPropertySourceLoader.DOT, parentKey, node.getNodeName()),
						node.getNodeValue());
			}
		}
	}
Load the resource into one or more property sources. Implementations may either
return a list containing a single source, or in the case of a multi-document format
such as yaml a source for each document in the resource.
@param name the root name of the property source. If multiple documents are loaded
an additional suffix should be added to the name for each source loaded.
@param resource the resource to load
@return a list property sources
@throws IOException if the source cannot be loaded
spring-cloud-alibaba-starters/spring-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/parser/NacosXmlPropertySourceLoader.java