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.
		
		
		
		
			
				
					52 lines
				
				2.3 KiB
			
		
		
			
		
	
	
					52 lines
				
				2.3 KiB
			| 
											3 years ago
										 | 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);
 | ||
|  |     }
 | ||
|  | }
 |