You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
8.5 KiB
Java
198 lines
8.5 KiB
Java
package com.engine.util;
|
|
|
|
import com.alibaba.druid.util.StringUtils;
|
|
import org.w3c.dom.Document;
|
|
import org.w3c.dom.Element;
|
|
import org.w3c.dom.NodeList;
|
|
|
|
|
|
import javax.xml.parsers.DocumentBuilder;
|
|
import javax.xml.parsers.DocumentBuilderFactory;
|
|
import javax.xml.transform.OutputKeys;
|
|
import javax.xml.transform.Transformer;
|
|
import javax.xml.transform.TransformerFactory;
|
|
import javax.xml.transform.dom.DOMSource;
|
|
import javax.xml.transform.stream.StreamResult;
|
|
import java.io.ByteArrayInputStream;
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
public class XMLUtils {
|
|
//构建返回值
|
|
public static String count2XML(Map<String,String> headerParam,Integer todocount , Integer toreadcount ) {
|
|
try {
|
|
// 创建文档对象
|
|
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
|
|
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
|
|
Document doc = docBuilder.newDocument();
|
|
|
|
// 创建根节点
|
|
Element rootElement = doc.createElement("Service");
|
|
doc.appendChild(rootElement);
|
|
|
|
addServiceHeader(doc,rootElement,headerParam);
|
|
|
|
// 创建Service_Body节点
|
|
Element serviceBodyElement = doc.createElement("Service_Body");
|
|
rootElement.appendChild(serviceBodyElement);
|
|
|
|
// 创建response节点
|
|
Element responseElement = doc.createElement("response");
|
|
serviceBodyElement.appendChild(responseElement);
|
|
|
|
// 创建todo节点
|
|
Element todoElement = doc.createElement("todo");
|
|
responseElement.appendChild(todoElement);
|
|
|
|
// 创建count节点并设置值
|
|
if(todocount != null) {
|
|
Element countElement = doc.createElement("count");
|
|
countElement.setTextContent(todocount + "");
|
|
todoElement.appendChild(countElement);
|
|
}
|
|
if(toreadcount != null){
|
|
Element countOneElement = doc.createElement("countOne");
|
|
countOneElement.setTextContent(toreadcount+"");
|
|
todoElement.appendChild(countOneElement);
|
|
}
|
|
|
|
|
|
// 将文档对象转换为XML字符串
|
|
TransformerFactory transformerFactory = TransformerFactory.newInstance();
|
|
Transformer transformer = transformerFactory.newTransformer();
|
|
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); // 设置不包含XML声明
|
|
DOMSource source = new DOMSource(doc);
|
|
|
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
|
StreamResult result = new StreamResult(outputStream);
|
|
|
|
transformer.transform(source, result);
|
|
|
|
// 将XML结果转换为字符串
|
|
String xmlString = outputStream.toString("UTF-8");
|
|
//System.out.println(xmlString);
|
|
return xmlString;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return "";
|
|
}
|
|
|
|
private static void addServiceHeader(Document doc, Element rootElement, Map<String, String> headerParam) {
|
|
|
|
// 创建Service_Body节点
|
|
Element serviceHeaderElement = doc.createElement("Service_Header");
|
|
rootElement.appendChild(serviceHeaderElement);
|
|
//service_sn ESB服务流水号
|
|
if (!StringUtils.isEmpty(headerParam.get("service_sn"))){
|
|
Element serviceSnElement = doc.createElement("service_sn");
|
|
serviceSnElement.setTextContent(headerParam.get("service_sn"));
|
|
serviceHeaderElement.appendChild(serviceSnElement);
|
|
}
|
|
if (!StringUtils.isEmpty(headerParam.get("service_id"))){
|
|
Element serviceIdElement = doc.createElement("service_id");
|
|
serviceIdElement.setTextContent(headerParam.get("service_id"));
|
|
serviceHeaderElement.appendChild(serviceIdElement);
|
|
}
|
|
if (!StringUtils.isEmpty(headerParam.get("system_id"))){
|
|
Element systemIdElement = doc.createElement("system_id");
|
|
systemIdElement.setTextContent(headerParam.get("system_id"));
|
|
serviceHeaderElement.appendChild(systemIdElement);
|
|
}
|
|
if (!StringUtils.isEmpty(headerParam.get("requester_id"))){
|
|
Element requesterIdElement = doc.createElement("requester_id");
|
|
requesterIdElement.setTextContent(headerParam.get("requester_id"));
|
|
serviceHeaderElement.appendChild(requesterIdElement);
|
|
}
|
|
if (!StringUtils.isEmpty(headerParam.get("branch_id"))){
|
|
Element branchIdElement = doc.createElement("branch_id");
|
|
branchIdElement.setTextContent(headerParam.get("branch_id"));
|
|
serviceHeaderElement.appendChild(branchIdElement);
|
|
}
|
|
if (!StringUtils.isEmpty(headerParam.get("channel_id"))){
|
|
Element channelIdElement = doc.createElement("channel_id");
|
|
channelIdElement.setTextContent(headerParam.get("channel_id"));
|
|
serviceHeaderElement.appendChild(channelIdElement);
|
|
}
|
|
if (!StringUtils.isEmpty(headerParam.get("service_time"))){
|
|
Element serviceTimeElement = doc.createElement("requester_id");
|
|
serviceTimeElement.setTextContent(headerParam.get("service_time"));
|
|
serviceHeaderElement.appendChild(serviceTimeElement);
|
|
}
|
|
if (!StringUtils.isEmpty(headerParam.get("BnkSrlNo"))){
|
|
Element BnkSrlNoElement = doc.createElement("BnkSrlNo");
|
|
BnkSrlNoElement.setTextContent(headerParam.get("BnkSrlNo"));
|
|
serviceHeaderElement.appendChild(BnkSrlNoElement);
|
|
}
|
|
// if (!StringUtils.isEmpty(headerParam.get("FileFlg"))){
|
|
Element FileFlgElement = doc.createElement("FileFlg");
|
|
FileFlgElement.setTextContent("0");
|
|
serviceHeaderElement.appendChild(FileFlgElement);
|
|
// }
|
|
if (!StringUtils.isEmpty(headerParam.get("SvcCd"))){
|
|
Element SvcCdElement = doc.createElement("SvcCd");
|
|
SvcCdElement.setTextContent(headerParam.get("SvcCd"));
|
|
serviceHeaderElement.appendChild(SvcCdElement);
|
|
}
|
|
if (!StringUtils.isEmpty(headerParam.get("SvcScn"))){
|
|
Element SvcScnElement = doc.createElement("SvcScn");
|
|
SvcScnElement.setTextContent(headerParam.get("SvcScn"));
|
|
serviceHeaderElement.appendChild(SvcScnElement);
|
|
}
|
|
// 响应码
|
|
Element service_responseElement = doc.createElement("service_response");
|
|
serviceHeaderElement.appendChild(service_responseElement);
|
|
if (!StringUtils.isEmpty(headerParam.get("status"))){
|
|
Element statusElement = doc.createElement("status");
|
|
statusElement.setTextContent(headerParam.get("status"));
|
|
service_responseElement.appendChild(statusElement);
|
|
}
|
|
if (!StringUtils.isEmpty(headerParam.get("code"))){
|
|
Element codeElement = doc.createElement("code");
|
|
codeElement.setTextContent(headerParam.get("code"));
|
|
service_responseElement.appendChild(codeElement);
|
|
}
|
|
if (!StringUtils.isEmpty(headerParam.get("desc"))){
|
|
Element descElement = doc.createElement("desc");
|
|
descElement.setTextContent(headerParam.get("desc"));
|
|
service_responseElement.appendChild(descElement);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public static Map<String, String> parseXMLToMap(String xmlString) {
|
|
Map<String, String> resultMap = new HashMap<>();
|
|
try {
|
|
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
|
DocumentBuilder builder = factory.newDocumentBuilder();
|
|
Document document = builder.parse(new ByteArrayInputStream(xmlString.getBytes()));
|
|
|
|
Element rootElement = document.getDocumentElement();
|
|
extractValues(rootElement, resultMap);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return resultMap;
|
|
}
|
|
|
|
private static void extractValues(Element element, Map<String, String> resultMap) {
|
|
NodeList childNodes = element.getChildNodes();
|
|
for (int i = 0; i < childNodes.getLength(); i++) {
|
|
if (childNodes.item(i) instanceof Element) {
|
|
Element childElement = (Element) childNodes.item(i);
|
|
String nodeName = childElement.getNodeName();
|
|
String nodeValue = childElement.getTextContent();
|
|
resultMap.put(nodeName, nodeValue);
|
|
extractValues(childElement, resultMap);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
}
|
|
}
|