Commit 46eb73b2 by chengzhuoshen

1.修复MX_To_MTFATFNameAndAddress2 方法

2.修复 handlingXml 方法
parent 5d4d064e
......@@ -131,7 +131,7 @@ public class SwiftTransfer {
*/
public static Map<String, String> mx2MtMap(String xmlStr, Map<String, Object> extraMap) throws SwiftException {
try {
xmlStr = MxMessageReader.handingXml(xmlStr);
xmlStr = XmlUtil.handlingXml(xmlStr);
SwiftTranslationReport str = mx2MtPlus(xmlStr, null, extraMap);
Map<String, String> maps = MxMessageReader.getSwfMsgInfoViaMsg(str);
AbstractMX abstractMx = AbstractMX.parse(xmlStr);
......
......@@ -16,13 +16,14 @@ import com.prowidesoftware.swift.model.mx.AbstractMX;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.util.LinkedHashMap;
import java.util.Map;
public class Mx2ElementCreatorManager {
public String mx2Element(String xmlStr) throws SwiftException {
xmlStr = handlingXml(xmlStr);
xmlStr = XmlUtil.handlingXml(xmlStr);
AbstractMX abstractMX = AbstractMX.parse(xmlStr);
String messageType = (abstractMX.getMxId().getBusinessProcess().name()
+ "."
......@@ -40,7 +41,7 @@ public class Mx2ElementCreatorManager {
}
public Map<String, Object> mx2ElementMaps(String xmlStr) throws SwiftException {
xmlStr = handlingXml(xmlStr);
xmlStr = XmlUtil.handlingXml(xmlStr);
AbstractMX abstractMX = AbstractMX.parse(xmlStr);
String messageType = (abstractMX.getMxId().getBusinessProcess().name()
+ "."
......@@ -72,24 +73,4 @@ public class Mx2ElementCreatorManager {
return new Mx2ElementDefaultCreator();
}
}
/**
* 如果传入的xml 没有报文头,导致dom4j无法解析
* 提取xml里面的AppHdr和Document,重新组装成有效的xml报文
*/
private String handlingXml(String xmlStr) {
boolean flag = true;
try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
documentBuilder.parse(xmlStr);
} catch (Exception e) {
flag = false;
}
if (flag) { //如果是有效xml报文,直接返回
return XmlUtil.clearXmlNamespacePrefix(xmlStr);
} else {
return XmlUtil.clearXmlNamespacePrefix(SwiftTransfer.fetchXmlFromMixMessage(xmlStr));
}
}
}
......@@ -6,16 +6,18 @@ import com.brilliance.swift.mx2map.camt053.Mx2MapCamt053Creator;
import com.brilliance.swift.mx2map.camt054.Mx2MapCamt054Creator;
import com.brilliance.swift.mx2map.pacs008.Mx2MapPacs008Creator;
import com.brilliance.swift.mx2map.pacs009.Mx2MapPacs009Creator;
import com.brilliance.swift.util.XmlUtil;
import com.prowidesoftware.swift.model.mx.AbstractMX;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.util.Map;
public class Mx2MapCreatorManager {
public Map<String, Object> mx2Map(String xml, String localCode) throws SwiftException {
xml = handlingXml(xml);
xml = XmlUtil.handlingXml(xml);
AbstractMX abstractMX = AbstractMX.parse(xml);
String messageType = (abstractMX.getMxId().getBusinessProcess().name()
+ "."
......@@ -43,24 +45,4 @@ public class Mx2MapCreatorManager {
throw new SwiftException("无效的报文类型");
}
}
/**
* 如果传入的xml 没有报文头,导致dom4j无法解析
* 提取xml里面的AppHdr和Document,重新组装成有效的xml报文
*/
private String handlingXml(String xmlStr) {
boolean flag = true;
try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
documentBuilder.parse(xmlStr);
} catch (Exception e) {
flag = false;
}
if (flag) { //如果是有效xml报文,直接返回
return xmlStr;
} else {
return SwiftTransfer.fetchXmlFromMixMessage(xmlStr);
}
}
}
......@@ -2069,6 +2069,10 @@ public abstract class AbstractMx2MtTagsGenerate implements Mx2MtTagsGenerate {
mtNameAndAddress += Mx2MtConstants.NEW_LINE + mtCode4 + Mx2MtConstants.NEW_LINE + mtCode5;
addLines += 2;
}
if (StringUtil.isNotEmpty(mtCode8) && addLines < remainLines) {
addLines++;
mtNameAndAddress += Mx2MtConstants.NEW_LINE + mtCode8;
}
if (StringUtil.isNotEmpty(mtCode6) && addLines < remainLines) {
addLines++;
mtNameAndAddress += Mx2MtConstants.NEW_LINE + mtCode6;
......@@ -2077,10 +2081,6 @@ public abstract class AbstractMx2MtTagsGenerate implements Mx2MtTagsGenerate {
addLines++;
mtNameAndAddress += Mx2MtConstants.NEW_LINE + mtCode7;
}
if (StringUtil.isNotEmpty(mtCode8) && addLines < remainLines) {
addLines++;
mtNameAndAddress += Mx2MtConstants.NEW_LINE + mtCode8;
}
}
}
return mtNameAndAddress;
......
......@@ -26,13 +26,14 @@ import org.dom4j.DocumentHelper;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.util.Map;
public class Mx2MtCreatorManager {
public SwiftTranslationReport mx2Mt(String xml, String fileOutputPath, Map<String, Object> extraMap) throws SwiftException {
try {
xml = handlingXml(xml);
xml = XmlUtil.handlingXml(xml);
AbstractMX abstractMX = AbstractMX.parse(xml);
String messageType = (abstractMX.getMxId().getBusinessProcess().name()
+ "."
......@@ -153,24 +154,4 @@ public class Mx2MtCreatorManager {
}
return messageType;
}
/**
* 如果传入的xml 没有报文头,导致dom4j无法解析
* 提取xml里面的AppHdr和Document,重新组装成有效的xml报文
*/
private String handlingXml(String xmlStr) {
boolean flag = true;
try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
documentBuilder.parse(xmlStr);
} catch (Exception e) {
flag = false;
}
if (flag) { //如果是有效xml报文,直接返回
return xmlStr;
} else {
return SwiftTransfer.fetchXmlFromMixMessage(xmlStr);
}
}
}
......@@ -13,6 +13,7 @@ import com.prowidesoftware.swift.model.mt.AbstractMT;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
......@@ -440,24 +441,4 @@ public class MxMessageReader {
throw new SwiftException(e.getMessage());
}
}
/**
* 如果传入的xml 没有报文头,导致dom4j无法解析
* 提取xml里面的AppHdr和Document,重新组装成有效的xml报文
*/
public static String handingXml(String xmlStr) {
boolean flag = true;
try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
documentBuilder.parse(xmlStr);
} catch (Exception e) {
flag = false;
}
if (flag) { //如果是有效xml报文,直接返回
return xmlStr;
} else {
return SwiftTransfer.fetchXmlFromMixMessage(xmlStr);
}
}
}
package com.brilliance.swift.util;
import com.brilliance.swift.SwiftTransfer;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.net.URL;
import java.util.HashMap;
......@@ -199,4 +203,24 @@ public class XmlUtil {
xmlStr = xmlStr.replaceAll("xmlns:([\\w]*)", "xmlns");
return xmlStr;
}
/**
* 如果传入的xml 没有报文头,导致dom4j无法解析
* 提取xml里面的AppHdr和Document,重新组装成有效的xml报文
*/
public static String handlingXml(String xmlStr) {
boolean flag = true;
try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
documentBuilder.parse(new ByteArrayInputStream(xmlStr.getBytes()));
} catch (Exception e) {
flag = false;
}
if (flag) { //如果是有效xml报文,直接返回
return xmlStr;
} else {
return SwiftTransfer.fetchXmlFromMixMessage(xmlStr);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment