xml String字符串解析 map转xml

最近和其他系统调试接口,用的webServices 传参和返回类型要求都为String ,所以双方约定为xml格式的字符串,使用工具为dom4j   具体代码如下所示:


package com.cee.tyrz.services.ldap;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.UnknownHostException;
import java.rmi.RemoteException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import javax.naming.NamingException;
import javax.naming.directory.BasicAttributes;
import javax.naming.directory.DirContext;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.sax.SAXSource;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.jdom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import com.cee.common.CallBack;
import com.cee.common.CallService;
import com.cee.common.DESPlus;
import com.cee.common.MD5Code;
import com.cee.common.SpringContextHelper;
import com.cee.common.XmlUtils;
import com.cee.common.util.ConfigFactory;
import com.cee.common.util.LoadProperties;
import com.cee.components.ldap.LdapHelp;
import com.cee.sys.service.SysOrganizationsService;
import com.cee.sys.service.SysUsersService;
import com.cee.tyrz.services.ad.AdLdapContext;
import com.cee.tyrz.services.ad.AdService;
import com.cee.tyrz.services.ad.AdServiceImp;
import com.cee.tyrz.services.hrservice.HRService;
import com.cee.tyrz.services.hrservice.HRServiceImpl;
import com.cee.tyrz.services.ldap.support.PinyinHandler;
import com.cee.tyrz.warning.service.PushWarningService;
import com.cee.tyrz.yhfp.dao.SsoModelDAO;
import com.cee.tyrz.yhfp.domain.EipSsoModle;
import com.cee.tyrz.yhfp.service.CoremailService;
import com.cee.tyrz.yhfp.service.ISsoModelService;
import com.cee.tyrz.yhfp.service.yhfpManager;
import com.cee.tyrz.yhfp.service.impl.LoadUserService;
import com.sun.org.apache.bcel.internal.generic.LADD;
import com.sun.xml.messaging.saaj.util.JAXMStreamSource;

/**
 * 具体实现ldap发布接口
 * 
 * @author songyj
 * 
 */
public class LdapServiceExtendImp implements LdapServiceExtend {
	static Properties ad = LoadProperties.loadProperties("/config/sysParameter.properties");
	static Logger logger = Logger.getLogger(LdapServiceExtendImp.class.getName());
	
	
	public  String getListByUserId(String userIdXml) {
		List<String> userIdList = readStringXml(userIdXml);
		Map<String,String> resultMap = new HashMap<String, String>();
		String resultXml = "";
		ConfigFactory.loadAllConfigFile("");
		int yyy = 0;
		int nnn = 0;
		for(String userIdStr : userIdList){
			List<Map<String,String>> map=LdapHelp.searchForListMap("cn=Person,dc=sinopharm,dc=com", 2, "(userid=" + userIdStr + ")", null, null, null);
			if(map != null && map.size()> 0){
				try {
					resultMap.put(userIdStr, map.get(0).get("cn"));
					yyy += 1;
				} catch (Exception e) {
					e.printStackTrace();
					continue;
				}

			}else{
				resultMap.put(userIdStr, "");
				nnn += 1;
			}
	}
		if(null != resultMap && resultMap.size() > 0){
			try {
				System.out.println(resultMap.size());
				resultXml = map2xml(resultMap);
				
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		System.out.println(resultXml);
		System.out.println("=============================="+resultMap.size()+"yyy="+yyy+"nnn"+nnn);
		return resultXml;
	}




	public  String map2xml(Map<String, String> map) throws IOException {
		Document d = DocumentHelper.createDocument();
		org.dom4j.Element root = d.addElement("xml");
		Set<String> keys = map.keySet();
		         for(String key:keys) {
		        	 org.dom4j.Element line = root.addElement("line");
		        	 line.addElement("userid").addText(key);
		        	 line.addElement("username").addText(map.get(key));
		        }
		       StringWriter sw = new StringWriter();
		       XMLWriter xw = new XMLWriter(sw);
		       xw.setEscapeText(false);
	          xw.write(d);
	         String xmlStr = sw.toString();
	         return sw.toString();
	}
	
	 
	
	 public    List<String> readStringXml(String xml) {
	        Document doc = null;
	        List<String> userIdList = new ArrayList<String>();
	        try {
	            doc = DocumentHelper.parseText(xml); // 将字符串转为XML

	            org.dom4j.Element rootElt = doc.getRootElement(); // 获取根节点
	            System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称

	            Iterator iter = rootElt.elementIterator("line"); // 获取根节点下的子节点head

	            // 遍历head节点
	            while (iter.hasNext()) {

	            	org.dom4j.Element recordEle =  (org.dom4j.Element) iter.next();
	                String userid = ((org.dom4j.Element) recordEle).elementTextTrim("userid"); // 拿到head节点下的子节点title值
	              //  System.out.println("userid:" + userid);
	                userIdList.add(userid);
	            }
	      
	        } catch (DocumentException e) {
	            e.printStackTrace();

	        } catch (Exception e) {
	            e.printStackTrace();

	        }
	        return userIdList;
	    }

	
    
    public static void main(String[] args) {
    	//String testXml = "<root><line><userid>11048474</userid></line><line><userid>11045610</userid></line><line><userid>11065993</userid></line><line><userid>11016643</userid></line><line><userid>11047989</userid></line><line><userid>11090687</userid></line><line><userid>11090703</userid></line><line><userid>11114687</userid></line><line><userid>11058049</userid></line><line><userid>11018756</userid></line><line><userid>11020196</userid></line><line><userid>11054495</userid></line><line><userid>11021779</userid></line><line><userid>11019807</userid></line><line><userid>11112108</userid></line><line><userid>11058678</userid></line><line><userid>11049993</userid></line><line><userid>11016633</userid></line><line><userid>11045630</userid></line><line><userid>11032085</userid></line><line><userid>11049679</userid></line><line><userid>11050926</userid></line><line><userid>11058733</userid></line><line><userid>11058679</userid></line><line><userid>11058711</userid></line><line><userid>11058724</userid></line><line><userid>11049017</userid></line><line><userid>11048379</userid></line><line><userid>11049050</userid></line><line><userid>11032357</userid></line><line><userid>11090873</userid></line><line><userid>11067403</userid></line><line><userid>11095416</userid></line><line><userid>11095340</userid></line><line><userid>11095513</userid></line><line><userid>11095444</userid></line><line><userid>11095446</userid></line><line><userid>11091209</userid></line><line><userid>11095409</userid></line><line><userid>11065569</userid></line><line><userid>11049004</userid></line><line><userid>11095488</userid></line><line><userid>11084783</userid></line><line><userid>11110908</userid></line></root>";
    	LdapServiceExtendImp imp = new LdapServiceExtendImp();
    	String resultXml = imp.getListByUserId(testXml);
    	System.out.println(resultXml);
		
	}


	
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值