xml格式转换工具类


import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;

import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import com.alibaba.fastjson.JSONObject;
import com.lnlic.credit.common.core.constant.DataXmlConstant;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;

/**
 * xml格式转换工具类
 * 
 * @author Administrator
 *
 */
public class WebXmlUtil {
	
	private static Logger logger = Logger.getLogger(WebXmlUtil.class);  
	/**
	 * xml转换list
	 * 
	 * @return
	 * @throws DocumentException
	 */
	public static List<LinkedHashMap<String, String>> readStringXml(String xmlStr) {

    	List<LinkedHashMap<String, String>> list = new ArrayList<LinkedHashMap<String, String>>();
    	
    	Document document = null;
		try {
			document = DocumentHelper.parseText(xmlStr);
			
			Element rootElement = document.getRootElement();// 获取根节点
    	    
	    	getNodes(rootElement,list);
	    	
		} catch (DocumentException e) {
			
			logger.error("WebUtil_readStringXml: XML格式不正确,解析失败");
		}
    	 
		return list;
    }   	
	/**
	 * 递归遍历xml
	 * 
	 * @param rootElement
	 * @param list
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	private static void getNodes(Element rootElement,List list){
		
		//读取子节点配置
		Iterator iterator = rootElement.elementIterator();
		Element element=null;
		List<LinkedHashMap<String, String>> listData = null;
		while(iterator.hasNext()){
			element =(Element) iterator.next();
			if(DataXmlConstant.row.toLowerCase().equals(element.getName().toLowerCase())){
				listData = new  ArrayList();
				Iterator iteratororder = element.elementIterator();
				//将节点key和value放入map集合中
				LinkedHashMap<String, String> personMap = new LinkedHashMap<String, String>();
 				
				while(iteratororder.hasNext()){
					Element elementOrder = (Element) iteratororder.next();
					//获取节点name和value
					String eleName = elementOrder.getName();
					String eleValue = elementOrder.getTextTrim().trim();
					personMap.put(eleName, eleValue);
				}
				list.add(personMap);
			}
			//当前节点如果有子节点、递归
			Iterator iteratororder = element.elementIterator();
			if(iteratororder.hasNext()){
				getNodes(element,list);
			}
			
		}
				
	}
	
	/**
	 * js转xml格式
	 * 
	 * 此方法应用于js中的节点名称与xml中节点名称一致时。
	 * @param jsonobject
	 */
	public static String jsToXml(String [] str, JSONObject jsonObject){
		StringBuilder myStringBuilder = new StringBuilder();
		for(int i =0; i<str.length; i++){
			if(!"type".equals(str[i])){
				myStringBuilder.append(MessageFormat.format("<"+str[i]+">\n{0}\n</"+str[i]+">\n", jsonObject.get(str[i])));
			}
		}	
		return myStringBuilder.toString();
	}
}
发布了57 篇原创文章 · 获赞 10 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/zh_1721342390/article/details/89555120