import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import com.meida.common.utils.StringUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.util.Map;
public class XmlNodeUtils {
/**
* 解析xml节点数据
* @param xml
* @param nodeName 母节点名称
* @param itemKey 行唯一字段名称
* @return
*/
public static Map<String, JSONObject> getXmlNodeValues (String xml, String nodeName, String itemKey) {
Map<String, JSONObject> resultMap = Maps.newHashMap();
if(StringUtils.isBlank(xml) || StringUtils.isBlank(nodeName) || StringUtils.isBlank(itemKey)) {
return resultMap;
}
//创建DocumentBuilderFactory对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//创建DocumentBuilder对象
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document d = builder.parse(new ByteArrayInputStream(xml.getBytes()));
NodeList list = d.getElementsByTagName(nodeName);
resultMap = node(list, itemKey);
} catch (Exception e) {
e.printStackTrace();
}
return resultMap;
}
/**
* 获取节点数据
* @param list 节点
* @param itemKey 设置map中对象key的节点字段名称
* @return
*/
public static Map<String, JSONObject> node(NodeList list, String itemKey){
Map<String, JSONObject> resultMap = Maps.newHashMap();
for (int i = 0; i <list.getLength() ; i++) {
Node node = list.item(i);
NodeList childNodes = node.getChildNodes();
JSONObject itemObj = new JSONObject();
String key = null;
for (int j = 0; j <childNodes.getLength() ; j++) {
if (childNodes.item(j).getNodeType()==Node.ELEMENT_NODE) {
String nodeName = childNodes.item(j).getNodeName();
String nodeValue = childNodes.item(j).getFirstChild().getNodeValue();
if(itemKey.equals(nodeName)) {
key = nodeValue;
}
itemObj.put(nodeName, nodeValue);
}
}
resultMap.put(key, itemObj);
}
return resultMap;
}
}
12-02
1159
06-20
4841