You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					
					
						
							51 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
	
	
							51 lines
						
					
					
						
							2.3 KiB
						
					
					
				| package com.ynxbd.wx.wxfactory.menu.bean;
 | |
| 
 | |
| import com.qq.weixin.mp.aes.AesException;
 | |
| import org.w3c.dom.Document;
 | |
| import org.w3c.dom.Element;
 | |
| import org.w3c.dom.NodeList;
 | |
| import org.xml.sax.InputSource;
 | |
| 
 | |
| import javax.xml.parsers.DocumentBuilder;
 | |
| import javax.xml.parsers.DocumentBuilderFactory;
 | |
| import java.io.StringReader;
 | |
| 
 | |
| public class XMLParse {
 | |
|     public static Object[] extract(String xmltext) throws Exception {
 | |
|         Object[] result = new Object[3];
 | |
| 
 | |
|         try {
 | |
|             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 | |
|             dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
 | |
|             dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
 | |
|             dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
 | |
|             dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
 | |
|             dbf.setFeature("http://javax.xml.XMLConstants/feature/secure-processing", true);
 | |
|             dbf.setXIncludeAware(false);
 | |
|             dbf.setExpandEntityReferences(false);
 | |
|             DocumentBuilder db = dbf.newDocumentBuilder();
 | |
|             StringReader sr = new StringReader(xmltext);
 | |
|             InputSource is = new InputSource(sr);
 | |
|             Document document = db.parse(is);
 | |
|             Element root = document.getDocumentElement();
 | |
|             NodeList nodelist1 = root.getElementsByTagName("Encrypt");
 | |
|             NodeList nodelist2 = root.getElementsByTagName("ToUserName");
 | |
|             if (nodelist2.item(0) == null) {
 | |
|                 nodelist2 = root.getElementsByTagName("AppId");
 | |
|             }
 | |
| 
 | |
|             result[0] = 0;
 | |
|             result[1] = nodelist1.item(0).getTextContent();
 | |
|             result[2] = nodelist2.item(0).getTextContent();
 | |
|             return result;
 | |
|         } catch (Exception var10) {
 | |
|             var10.printStackTrace();
 | |
|             throw new Exception("-40002");
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public static String generate(String encrypt, String signature, String timestamp, String nonce) {
 | |
|         String format = "<xml>\n<Encrypt><![CDATA[%1$s]]></Encrypt>\n<MsgSignature><![CDATA[%2$s]]></MsgSignature>\n<TimeStamp>%3$s</TimeStamp>\n<Nonce><![CDATA[%4$s]]></Nonce>\n</xml>";
 | |
|         return String.format(format, encrypt, signature, timestamp, nonce);
 | |
|     }
 | |
| }
 | |
| 
 |