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);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |