微信支付--工具类--处理XML数据

来源:互联网 发布:linux自动获取ip地址 编辑:程序博客网 时间:2024/04/29 11:31
import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import java.util.SortedMap;import java.util.TreeMap;import org.jdom.Document;import org.jdom.Element;import org.jdom.JDOMException;import org.jdom.input.SAXBuilder;/** *  * @author Administrator *  */public class XMLUtil {/** *  * 解析xml,返回第一级元素键值对。如果第一级元素有子节点,则此节点的值是子节点的xml数据。 *  * @param strxml *  * @return *  * @throws JDOMException *  * @throws IOException */public static SortedMap<String, String> parseMap(String strxml)throws JDOMException, IOException {if (null == strxml || "".equals(strxml)) {return null;}strxml = strxml.replaceFirst("encoding=\".*\"", "encoding=\"UTF-8\"");SortedMap<String, String> m = new TreeMap<String, String>();InputStream in = new ByteArrayInputStream(strxml.getBytes("UTF-8"));SAXBuilder builder = new SAXBuilder();Document doc = builder.build(in);Element root = doc.getRootElement();List list = root.getChildren();Iterator it = list.iterator();while (it.hasNext()) {Element e = (Element) it.next();String k = e.getName();String v = "";List children = e.getChildren();if (children.isEmpty()) {v = e.getTextNormalize();} else {v = XMLUtil.getChildrenText(children);}m.put(k, v);}// 关闭流in.close();return m;}/** *  * 获取子结点的xml *  * @param children *  * @return String */private static String getChildrenText(List children) {StringBuffer sb = new StringBuffer();if (!children.isEmpty()) {Iterator it = children.iterator();while (it.hasNext()) {Element e = (Element) it.next();String name = e.getName();String value = e.getTextNormalize();List list = e.getChildren();sb.append("<" + name + ">");if (!list.isEmpty()) {sb.append(XMLUtil.getChildrenText(list));}sb.append(value);sb.append("</" + name + ">");}}return sb.toString();}/** * 输出XML *  * @param parameters * @return */public static String parseXML(SortedMap parameters) {StringBuffer sb = new StringBuffer();sb.append("<xml>");Set es = parameters.entrySet();Iterator it = es.iterator();while (it.hasNext()) {Map.Entry entry = (Map.Entry) it.next();String k = (String) entry.getKey();String v = (String) entry.getValue();if (null != v && !"".equals(v) && !"appkey".equals(k)) {sb.append("<" + k + ">" + v + "</" + k + ">\n");}}sb.append("</xml>");return sb.toString();}}

0 0
原创粉丝点击