您的位置:首页 > 其它

xml String字符串解析 map转xml

2018-01-16 15:04 441 查看
最近和其他系统调试接口,用的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);

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

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: