`

XML解析

    博客分类:
  • XML
 
阅读更多

参考:http://blog.csdn.net/yuan16423276/article/details/17385867

第一种,直接读取流:

private static Map<String, String> parseXml(HttpServletRequest request){
		try {
			InputStream is = request.getInputStream();
			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();   
			DocumentBuilder db = dbf.newDocumentBuilder();   
			Document document = db.parse(is);
			NodeList employees = document.getChildNodes();   
			for (int i = 0; i < employees.getLength(); i++) {   
				Node employee = employees.item(i);   
				NodeList employeeInfo = employee.getChildNodes();   
				for (int j = 0; j < employeeInfo.getLength(); j++) {   
					Node node = employeeInfo.item(j);   
					NodeList employeeMeta = node.getChildNodes();   
					for (int k = 0; k < employeeMeta.getLength(); k++) {   
						System.out.println(employeeMeta.item(k).getNodeName()   
								+ ":" + employeeMeta.item(k).getTextContent());   
					}   
				}   
			}   
			System.out.println("解析完毕");   
		} catch (IOException | ParserConfigurationException | SAXException e) {
			e.printStackTrace();
		}
		return null;
	}

 

 

第二种,字符串转为流:

public static void main(String[] args) throws SAXException, IOException, ParserConfigurationException, IllegalArgumentException, IllegalAccessException, NoSuchMethodException, SecurityException {
		WeiXinReceiveMsgDTO wxrmDto = new WeiXinReceiveMsgDTO();
		StringBuffer sb = new StringBuffer();  
        sb.append("<xml><ToUserName><![CDATA[");  
        sb.append("bob");  
        sb.append("]]></ToUserName><FromUserName><![CDATA[");  
        sb.append("looyii34343434");  
        sb.append("]]></FromUserName><CreateTime>");  
        sb.append("2761288732");  
        sb.append("</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[");  
        sb.append("消息文本");  
        sb.append("]]></Content><FuncFlag>0</FuncFlag></xml>");  
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();   
		DocumentBuilder db = dbf.newDocumentBuilder();   
		InputStream in = new ByteArrayInputStream(sb.toString().getBytes());
		Document document = db.parse(in);
		NodeList employees = document.getChildNodes();   
		for (int i = 0; i < employees.getLength(); i++) {   
			Node employee = employees.item(i);   
			NodeList employeeInfo = employee.getChildNodes();   
			for (int j = 0; j < employeeInfo.getLength(); j++) {   
				Node node = employeeInfo.item(j);
				NodeList employeeMeta = node.getChildNodes();   
				for (int k = 0; k < employeeMeta.getLength(); k++) {   
					setOjectFieldValue(wxrmDto,node.getNodeName(),employeeMeta.item(k).getTextContent());
				}   
			}   
		}  
		
		System.out.println(wxrmDto.toString());
	}
	
	/**
	 * 给对象的属性赋值
	 * @param obj 对象
	 * @param name 需要赋值属性名称
	 * @param value 需要的赋值
	 * @throws IllegalArgumentException
	 * @throws IllegalAccessException
	 * @throws NoSuchMethodException
	 * @throws SecurityException
	 */
	public static void setOjectFieldValue(Object obj, String name , String value){
		try {
			Field[] flds = obj.getClass().getDeclaredFields(); 
			for (int k2 = 0; k2 < flds.length; k2++) {
				String foeldName = flds[k2].getName().replaceFirst(flds[k2].getName().substring(0, 1), flds[k2].getName().substring(0, 1).toUpperCase());
				if(foeldName.equals(name)){
					//关键。。。可访问私有变量  
					flds[k2].setAccessible(true);
					//对属性赋值
					flds[k2].set(obj, value);
				}
			} 
		} catch (IllegalArgumentException | IllegalAccessException e) {
			e.printStackTrace();
		}
	}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics