| 
					
				 | 
			
			
				@ -0,0 +1,812 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.util.common; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.core.JsonGenerator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.core.JsonParser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.databind.ObjectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.dataformat.xml.XmlMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.dom4j.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.dom4j.io.OutputFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.dom4j.io.XMLWriter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.dom4j.tree.DefaultAttribute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.util.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.ByteArrayOutputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.StringWriter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.UnsupportedEncodingException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.lang.reflect.Field; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class XMLUtil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private static Logger logger = LoggerFactory.getLogger(XMLUtil.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 把xml字符串转换成 Document对象。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param xml 需要转换的xml字符串 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 返回Document对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 如果转换成Document对象异常的话抛出异常。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static Document parseXml(String xml) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return DocumentHelper.parseText(xml); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (DocumentException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // TODO Auto-generated catch block 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("传入的 xml 不是标准的xml字符串,请检查字符串是否合法。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 转换成xml字符串 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param xmlDoc 需要解析的xml对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String toXML_UTF_8(Document xmlDoc) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return toXML(xmlDoc, "UTF-8", true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 转换成xml字符串 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param xmlDoc 需要解析的xml对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String toXML_GBK(Document xmlDoc) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return toXML(xmlDoc, "GBK", true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 转换成xml字符串 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param xmlDoc   需要解析的xml对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param encoding 编码格式:UTF-8、GBK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param iscom    是否为紧凑型格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 修正完成后的xml字符串 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String toXML(Document xmlDoc, String encoding, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               boolean iscom) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ByteArrayOutputStream byteRep = new ByteArrayOutputStream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        OutputFormat format = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (iscom) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            format = OutputFormat.createCompactFormat();// 紧凑型格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            format = OutputFormat.createPrettyPrint();// 缩减型格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        format.setEncoding(encoding);// 设置编码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        format.setTrimText(false);// 设置text中是否要删除其中多余的空格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        XMLWriter xw; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            xw = new XMLWriter(byteRep, format); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            xw.write(xmlDoc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (UnsupportedEncodingException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // TODO Auto-generated catch block 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("传入的编码格式错误,请传入正确的编码。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // TODO Auto-generated catch block 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("文档转换成xml字符串时出错。" + xmlDoc.asXML()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return byteRep.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 对节点Element 添加节点。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param e     需要添加的节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param name  添加的节点的名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param value 添加的内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *              <br/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *              Demo: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *              < Root > aaa < /Root > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *              <br/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *              call-->  addChildElement(root, "A", "a"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *              <br/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *              result--> < Root >< A >a< /A >< /Root > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static void addElement(Element e, String name, Object value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (isBlank(value)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.addElement(name).addText(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.addElement(name).addText(value.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 判断对象是否为空!(null,"", "null") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private static boolean isBlank(String value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (value == null || value.length() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (StringUtils.isEmpty(value)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 判断对象是否非空!(null,"", "null") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param obj 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static boolean isNotBlank(Object obj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return !isBlank(obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 判断对象是否为空!(null,"", "null") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param obj 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static boolean isBlank(Object obj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj instanceof String) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return isBlank((String) obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return isBlank(obj.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static void addElement(Element e, String name, Integer value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Element current = e.addElement(name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (value != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            current.setText(Integer.toString(value)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 添加CDATA 类型节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param e 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static void addCDATAElement(Element e, String name, String value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Element current = e.addElement(name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (value != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            current.addCDATA(value.trim()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 添加CDATA 类型节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param e 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static void addCDATAElement(Element e, String name, Integer value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Element current = e.addElement(name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (value != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            current.addCDATA(value.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取节点中的整数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static int getInt(Element e, String name, boolean isMust) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Element current = e.element(name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (current == null || current.getText() == null || "".equals(current.getText().trim()) || current.getText().length() <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (isMust) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                throw new Exception("在 $" + e.asXML() + "$中获取节点:" + name + " 的值为空。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Integer i = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            i = Integer.parseInt(current.getTextTrim()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (NumberFormatException e1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            i = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (isMust) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                throw new Exception("在 $" + e.asXML() + "$中获取节点:" + name + " 的值不是整形。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取节点中的字符串 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String getString(Element e, String name, boolean isMust) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return getString(e, name, isMust, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取节点中的字符串 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param e 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param isMust 是否必填 true 必填  false非必填 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param defVal 默认值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String getString(Element e, String name, boolean isMust, String defVal) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Element current = e.element(name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (current == null || current.getText() == null || StringUtils.isEmpty(current.getText().trim())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (isMust) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                throw new Exception("在 $" + e.asXML() + "$中获取节点:" + name + " 的值为空。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return defVal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return current.getTextTrim(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String ElementStringValue(String str) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (str != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return str; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static Integer ElementIntegerValue(Integer str) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (str != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return str; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String ElementValue(String str) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (str != null && !str.equalsIgnoreCase("null")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return str; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String xml2json(String xml){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringWriter w = new StringWriter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ObjectMapper objectMapper = new ObjectMapper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        XmlMapper xmlMapper = new XmlMapper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JsonParser jp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            jp = xmlMapper.getFactory().createParser(xml); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JsonGenerator jg = objectMapper.getFactory().createGenerator(w); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            while (jp.nextToken() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String name = jp.getParsingContext().getCurrentName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if ("".equals(name)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    jp.overrideCurrentName("text"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                jg.copyCurrentEvent(jp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            jp.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            jg.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return w.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String formatXML(Document doc) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringWriter out = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OutputFormat formate = OutputFormat.createPrettyPrint(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            out = new StringWriter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            XMLWriter writer = new XMLWriter(out, formate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            writer.write(doc); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (IOException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            out.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return out.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    // ---------- map转XML-------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String map2xml(Map<String, String> dataMap) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        synchronized (XMLUtil.class) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            StringBuilder strBuilder = new StringBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            strBuilder.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            strBuilder.append("<QUERY_FORM>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Set<String> objSet = dataMap.keySet(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Object key : objSet) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (key == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                strBuilder.append("<").append(key.toString()).append(">"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Object value = dataMap.get(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                strBuilder.append(coverter(value)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                strBuilder.append("</").append(key.toString()).append(">"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            strBuilder.append("</QUERY_FORM>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return strBuilder.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String map2xmlForWx(Map<String, String> dataMap) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        synchronized (XMLUtil.class) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            StringBuilder strBuilder = new StringBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            strBuilder.append("<xml>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Set<String> objSet = dataMap.keySet(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Object key : objSet) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (key == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                strBuilder.append("<").append(key.toString()).append(">"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Object value = dataMap.get(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                strBuilder.append(coverter(value)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                strBuilder.append("</").append(key.toString()).append(">"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            strBuilder.append("</xml>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return strBuilder.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String coverter(Object[] objects) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringBuilder strBuilder = new StringBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (Object obj : objects) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            strBuilder.append("<item className=").append(obj.getClass().getName()).append(">\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            strBuilder.append(coverter(obj)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            strBuilder.append("</item>\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return strBuilder.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String coverter(Collection<?> objects) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringBuilder strBuilder = new StringBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (Object obj : objects) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            strBuilder.append("<item className=").append(obj.getClass().getName()).append(">\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            strBuilder.append(coverter(obj)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            strBuilder.append("</item>\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return strBuilder.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static String coverter(Object object) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (object instanceof Object[]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return coverter((Object[]) object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (object instanceof Collection) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return coverter((Collection<?>) object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringBuilder strBuilder = new StringBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (isObject(object)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Class<? extends Object> clz = object.getClass(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Field[] fields = clz.getDeclaredFields(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Field field : fields) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                field.setAccessible(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (field == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String fieldName = field.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Object value = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    value = field.get(object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } catch (IllegalArgumentException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } catch (IllegalAccessException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                strBuilder.append("<").append(fieldName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        .append(" className=\"").append( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        value.getClass().getName()).append("\">"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (isObject(value)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    strBuilder.append(coverter(value)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } else if (value == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    strBuilder.append("null"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    strBuilder.append(value.toString() + ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                strBuilder.append("</").append(fieldName).append(">"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (object == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            strBuilder.append("null"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            strBuilder.append(object.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return strBuilder.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private static boolean isObject(Object obj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj instanceof String) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj instanceof Integer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj instanceof Double) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj instanceof Float) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj instanceof Byte) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj instanceof Long) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj instanceof Character) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj instanceof Short) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj instanceof Boolean) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    // --------------------xml转map--------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private static void ele2map(Map map, Element ele)  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 获得当前节点的子节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Element> elements = ele.elements(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (elements.size() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 没有子节点说明当前节点是叶子节点,直接取值即可 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            map.put(ele.getName(), ele.getText()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (elements.size() == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 只有一个子节点说明不用考虑list的情况,直接继续递归即可 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, Object> tempMap = new HashMap<String, Object>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ele2map(tempMap, elements.get(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //设置标签属性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            setAttributes(tempMap,elements.get(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (tempMap.size()==1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                map.put(ele.getName(), ele.getText()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                map.put(ele.getName(), tempMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 多个子节点的话就得考虑list的情况了,比如多个子节点有节点名称相同的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 构造一个map用来去重 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, Object> tempMap = new HashMap<String, Object>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Element element : elements) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tempMap.put(element.getName(), null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Set<String> keySet = tempMap.keySet(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (String string : keySet) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Namespace namespace = elements.get(0).getNamespace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<Element> elements2 = ele.elements(new QName(string, namespace)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                // 如果同名的数目大于1则表示要构建list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (elements2.size() > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    List<Map> list = new ArrayList<Map>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    for (Element element : elements2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        Map<String, Object> tempMap1 = new HashMap<String, Object>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        ele2map(tempMap1, element); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        setAttributes(tempMap1,element);//属性值设置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        list.add(tempMap1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    map.put(string, list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    // 同名的数量不大于1则直接递归去 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Map<String, Object> tempMap1 = new HashMap<String, Object>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ele2map(tempMap1, elements2.get(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    setAttributes(tempMap1,elements2.get(0));//属性值设置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (tempMap1.containsKey(string)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        map.put(string, tempMap1.get(string)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        map.put(string, tempMap1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 设置属性值(xml转map) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param element 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static void setAttributes(Map map,Element element){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List list = element.attributes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String,Object> attrMap = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        DefaultAttribute e = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!list.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            attrMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (int i = 0; i < list.size(); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                e = (DefaultAttribute) list.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                attrMap.put(e.getName(),e.getText()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            attrMap.put("text",element.getText()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (attrMap!=null && !attrMap.isEmpty()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            map.put(element.getName(),attrMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//============================================ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static Object xml2map(Element element) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        System.out.println(element); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> map = new HashMap<String, Object>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Element> elements = element.elements(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (elements.size() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            map.put(element.getName(), element.getText()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (!element.isRootElement()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return element.getText(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (elements.size() == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            map.put(elements.get(0).getName(), xml2map(elements.get(0))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (elements.size() > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 多个子节点的话就得考虑list的情况了,比如多个子节点有节点名称相同的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 构造一个map用来去重 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, Element> tempMap = new HashMap<String, Element>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Element ele : elements) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                tempMap.put(ele.getName(), ele); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Set<String> keySet = tempMap.keySet(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (String string : keySet) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Namespace namespace = tempMap.get(string).getNamespace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<Element> elements2 = element.elements(new QName(string, namespace)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                // 如果同名的数目大于1则表示要构建list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (elements2.size() > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    List<Object> list = new ArrayList<Object>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    for (Element ele : elements2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        list.add(xml2map(ele)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    map.put(string, list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    // 同名的数量不大于1则直接递归去 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    map.put(string, xml2map(elements2.get(0))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    ============================================ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static Map xmltoMap(String xml) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!StringUtils.isEmpty(xml)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Map map = new HashMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Document document = DocumentHelper.parseText(xml); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Element nodeElement = document.getRootElement(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List node = nodeElement.elements(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                for (Iterator it = node.iterator(); it.hasNext(); ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Element elm = (Element) it.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    List list = elm.elements(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if(list.size() > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        Map xmltoMap = xmltoMap(elm.asXML()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        map.putAll(xmltoMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        map.put(elm.getName(), elm.getText()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    elm = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                node = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                nodeElement = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                document = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static Map xmltoMap2(String xml) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String,Object> map = new HashMap<String,Object>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Document doc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            doc = DocumentHelper.parseText(xml); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Element el = doc.getRootElement(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            map.put(el.getName(), DiGui(el)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (DocumentException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static void main(String[] args) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String aa="<HisTrans>\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  <TranCode>GetHealthYE</TranCode>\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  <RespMsg />\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  <RespCode>0</RespCode>\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  <Order>\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "    <HealthYE>3.94</HealthYE>\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "    <HospitalizationYE />\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  </Order>\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "</HisTrans>"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        String aa= "<HisTrans>\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                "  <TranCode>GetHealthYE</TranCode>\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                "  <RespMsg />\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                "  <RespCode>0</RespCode>\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                "  <Order>\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                "    <HealthYE>3.94</HealthYE>\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                "    <HospitalizationYE></HospitalizationYE>\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                "  </Order>\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                "</HisTrans>"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map map = xmltoMap(aa); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        System.out.println(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static List xmltoList(String xml) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!StringUtils.isEmpty(xml)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<Map> list = new ArrayList<Map>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Document document = DocumentHelper.parseText(xml); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Element nodesElement = document.getRootElement(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List nodes = nodesElement.elements(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                for (Iterator its = nodes.iterator(); its.hasNext(); ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Element nodeElement = (Element) its.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Map map = xmltoMap(nodeElement.asXML()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    list.add(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    map = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                nodes = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                nodesElement = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                document = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static Map DiGui(Element rootElement) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 对节点进行判断 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int flag = hasGradeChrid(rootElement); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 存储本层的map,采用LinkedHashMap,保证的顺序 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> map_this = new LinkedHashMap<String, Object>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 存储子节点的map,采用LinkedHashMap,保证的顺序 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String, Object> map_children = new LinkedHashMap<String, Object>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 获取节点迭代器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Iterator<Element> iterator = rootElement.elementIterator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (flag == 0) {// 说明该节点所有子节点均有子节点,进入递归 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            int num = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            while (iterator.hasNext()) {// 依次继续对节点进行操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Element childelement = iterator.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                map_children = DiGui(childelement); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                map_this.put(childelement.getName() + "_" + num, map_children); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                num++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (flag == 1) {// 说明该节点的所有子节点均无子节点,封装数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            while (iterator.hasNext()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Element childelement = iterator.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                map_this.put(childelement.getName(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        (String) childelement.getData()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (flag == 2) {// 说明了该节点的子节点有些拥有子节点,有些不拥有 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            int nodes = rootElement.elements().size();// 获取子节点个数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            while (nodes >= 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                nodes--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                int num = 0;//为了让循环重复的节点,避免了key的冲突 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Element element = iterator.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                flag = hasGradeChrid(element);//对节点进行判断 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (flag == 1) {                          //对于子节点,如果只是普通的子节点,那么直接将数进行封装 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    // 封装如map,String,String 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    map_this.put(element.getName(), element.getData()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                else{                                     //非普通子节点,那么进行递归 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    map_children = DiGui(element); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    map_this.put(element.getName() + "_" + num, map_children);//为了让循环重复的节点,避免了key的冲突 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return map_this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 用于判断该节点的类型 0:说明该节点所有子节点均有子节点 1:说明该节点的所有子节点均无子节点 2:说明了该节点的子节点有些拥有子节点,有些不拥有 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param rootelement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public static int hasGradeChrid(Element rootelement) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        int flag = 1;// 初始为1,用与处理对没有子节点的节点进行判断 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringBuffer flag_arr = new StringBuffer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Iterator<Element> iterator = rootelement.elementIterator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        while (iterator.hasNext()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Element element = iterator.next();// 获取入参rootelement节点的子节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // Iterator<Element> iterator_chirld = element.elementIterator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (element.elements().size() > 0) {// 判断是否有子节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                flag_arr.append("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                flag_arr.append("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 如果只包含0,说明该节点所有子节点均有子节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (flag_arr.toString().contains("0")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            flag = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 如果只包含1,说明该节点的所有子节点均无子节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (flag_arr.toString().contains("1")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            flag = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 如果同时包含了,0,1,说明了该节点的子节点有些拥有子节点,有些不拥有 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (flag_arr.toString().contains("0") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                && flag_arr.toString().contains("1")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            flag = 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return flag; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /* ============================== 以下暂时添加,后面可删除 ========================================= */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    public static String maptoXml(Map map) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        Document document = DocumentHelper.createDocument(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        Element nodeElement = document.addElement("node"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        for (Object obj : map.keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            Element keyElement = nodeElement.addElement("key"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            keyElement.addAttribute("label", String.valueOf(obj)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            keyElement.setText(String.valueOf(map.get(obj))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        return doc2String(document); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    public static String listtoXml(List list) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        Document document = DocumentHelper.createDocument(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        Element nodesElement = document.addElement("nodes"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        int i = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        for (Object o : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            Element nodeElement = nodesElement.addElement("node"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            if (o instanceof Map) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                for (Object obj : ((Map) o).keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    Element keyElement = nodeElement.addElement("key"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    keyElement.addAttribute("label", String.valueOf(obj)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                    keyElement.setText(String.valueOf(((Map) o).get(obj))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                Element keyElement = nodeElement.addElement("key"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                keyElement.addAttribute("label", String.valueOf(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                keyElement.setText(String.valueOf(o)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            i++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        return doc2String(document); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    public static String doc2String(Document document) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        String s = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            // 使用输出流来进行转化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            ByteArrayOutputStream out = new ByteArrayOutputStream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            // 使用UTF-8编码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            OutputFormat format = new OutputFormat("   ", true, "UTF-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            XMLWriter writer = new XMLWriter(out, format); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            writer.write(document); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            s = out.toString("UTF-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        } catch (Exception ex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            ex.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        return s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |