[ java 工具類] xml字串解析成Map(DOM解析)
阿新 • • 發佈:2018-11-22
package com.tencent.jungle.wechat.util; import com.google.inject.Singleton; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.StringReader; import java.util.HashMap; import java.util.Map; @Singleton public class XmlUtils { public static Document parseXmlString(String xmlStr){ try{ InputSource is = new InputSource(new StringReader(xmlStr)); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder=factory.newDocumentBuilder(); Document doc = builder.parse(is); return doc; }catch(Exception e){ e.printStackTrace(); } return null; } public static Map<String,Object> getXmlBodyContext(String bodyXml){ Map<String,Object> dataMap = new HashMap<String,Object>(); Document doc = parseXmlString(bodyXml); if(null != doc){ NodeList rootNode = doc.getElementsByTagName("xml"); if(rootNode != null){ Node root = rootNode.item(0); NodeList nodes = root.getChildNodes(); for(int i = 0;i < nodes.getLength(); i++){ Node node = nodes.item(i); dataMap.put(node.getNodeName(), node.getTextContent()); } } } return dataMap; } } public static void main(String[] args) { String xmlStr = "<xml><AppId></AppId><CreateTime>1413192605</CreateTime><InfoType></InfoType><ComponentVerifyTicket></ComponentVerifyTicket></xml>"; Map<String, Object> map = XmlUtils.getXmlBodyContext(xmlStr); System.out.println(map); }