115 lines
3.5 KiB
Java
115 lines
3.5 KiB
Java
package com.zcloud.util;
|
||
|
||
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.Map.Entry;
|
||
import java.util.Set;
|
||
import org.jdom2.Document;
|
||
import org.jdom2.Element;
|
||
import org.jdom2.JDOMException;
|
||
import org.jdom2.input.SAXBuilder;
|
||
import java.io.ByteArrayInputStream;
|
||
public class XMLUtil {
|
||
/**
|
||
* 解析xml,返回第一级元素键值对。如果第一级元素有子节点,则此节点的值是子节点的xml数据。
|
||
* @param strxml
|
||
* @return
|
||
* @throws JDOMException
|
||
* @throws IOException
|
||
*/
|
||
public static Map doXMLParse(String strxml) throws JDOMException, IOException {
|
||
strxml = strxml.replaceFirst("encoding=\".*\"", "encoding=\"UTF-8\"");
|
||
if(null == strxml || "".equals(strxml)) {
|
||
return null;
|
||
}
|
||
|
||
Map m = new HashMap();
|
||
|
||
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
|
||
*/
|
||
public 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 strxml
|
||
* @return
|
||
* @throws IOException
|
||
* @throws JDOMException
|
||
*/
|
||
public static String getXMLEncoding(String strxml) throws JDOMException, IOException {
|
||
InputStream in = HttpClientUtil.String2Inputstream(strxml);
|
||
SAXBuilder builder = new SAXBuilder();
|
||
Document doc = builder.build(in);
|
||
in.close();
|
||
return (String)doc.getProperty("encoding");
|
||
}
|
||
|
||
/**
|
||
* 支付成功,返回微信那服务器
|
||
* @param return_code
|
||
* @param return_msg
|
||
* @return
|
||
*/
|
||
public static String setXML(String return_code, String return_msg) {
|
||
return "<xml><return_code><![CDATA[" + return_code + "]]></return_code><return_msg><![CDATA[" + return_msg + "]]></return_msg></xml>";
|
||
}
|
||
|
||
public static String createXML(Map<String,Object> map){
|
||
Set<Entry<String,Object>> set=map.entrySet();
|
||
set.iterator();
|
||
return null;
|
||
}
|
||
|
||
} |