Commit 46eb73b2 by chengzhuoshen

1.修复MX_To_MTFATFNameAndAddress2 方法

2.修复 handlingXml 方法
parent 5d4d064e
...@@ -131,7 +131,7 @@ public class SwiftTransfer { ...@@ -131,7 +131,7 @@ public class SwiftTransfer {
*/ */
public static Map<String, String> mx2MtMap(String xmlStr, Map<String, Object> extraMap) throws SwiftException { public static Map<String, String> mx2MtMap(String xmlStr, Map<String, Object> extraMap) throws SwiftException {
try { try {
xmlStr = MxMessageReader.handingXml(xmlStr); xmlStr = XmlUtil.handlingXml(xmlStr);
SwiftTranslationReport str = mx2MtPlus(xmlStr, null, extraMap); SwiftTranslationReport str = mx2MtPlus(xmlStr, null, extraMap);
Map<String, String> maps = MxMessageReader.getSwfMsgInfoViaMsg(str); Map<String, String> maps = MxMessageReader.getSwfMsgInfoViaMsg(str);
AbstractMX abstractMx = AbstractMX.parse(xmlStr); AbstractMX abstractMx = AbstractMX.parse(xmlStr);
......
...@@ -16,13 +16,14 @@ import com.prowidesoftware.swift.model.mx.AbstractMX; ...@@ -16,13 +16,14 @@ import com.prowidesoftware.swift.model.mx.AbstractMX;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
public class Mx2ElementCreatorManager { public class Mx2ElementCreatorManager {
public String mx2Element(String xmlStr) throws SwiftException { public String mx2Element(String xmlStr) throws SwiftException {
xmlStr = handlingXml(xmlStr); xmlStr = XmlUtil.handlingXml(xmlStr);
AbstractMX abstractMX = AbstractMX.parse(xmlStr); AbstractMX abstractMX = AbstractMX.parse(xmlStr);
String messageType = (abstractMX.getMxId().getBusinessProcess().name() String messageType = (abstractMX.getMxId().getBusinessProcess().name()
+ "." + "."
...@@ -40,7 +41,7 @@ public class Mx2ElementCreatorManager { ...@@ -40,7 +41,7 @@ public class Mx2ElementCreatorManager {
} }
public Map<String, Object> mx2ElementMaps(String xmlStr) throws SwiftException { public Map<String, Object> mx2ElementMaps(String xmlStr) throws SwiftException {
xmlStr = handlingXml(xmlStr); xmlStr = XmlUtil.handlingXml(xmlStr);
AbstractMX abstractMX = AbstractMX.parse(xmlStr); AbstractMX abstractMX = AbstractMX.parse(xmlStr);
String messageType = (abstractMX.getMxId().getBusinessProcess().name() String messageType = (abstractMX.getMxId().getBusinessProcess().name()
+ "." + "."
...@@ -72,24 +73,4 @@ public class Mx2ElementCreatorManager { ...@@ -72,24 +73,4 @@ public class Mx2ElementCreatorManager {
return new Mx2ElementDefaultCreator(); 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; ...@@ -6,16 +6,18 @@ import com.brilliance.swift.mx2map.camt053.Mx2MapCamt053Creator;
import com.brilliance.swift.mx2map.camt054.Mx2MapCamt054Creator; import com.brilliance.swift.mx2map.camt054.Mx2MapCamt054Creator;
import com.brilliance.swift.mx2map.pacs008.Mx2MapPacs008Creator; import com.brilliance.swift.mx2map.pacs008.Mx2MapPacs008Creator;
import com.brilliance.swift.mx2map.pacs009.Mx2MapPacs009Creator; import com.brilliance.swift.mx2map.pacs009.Mx2MapPacs009Creator;
import com.brilliance.swift.util.XmlUtil;
import com.prowidesoftware.swift.model.mx.AbstractMX; import com.prowidesoftware.swift.model.mx.AbstractMX;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.util.Map; import java.util.Map;
public class Mx2MapCreatorManager { public class Mx2MapCreatorManager {
public Map<String, Object> mx2Map(String xml, String localCode) throws SwiftException { public Map<String, Object> mx2Map(String xml, String localCode) throws SwiftException {
xml = handlingXml(xml); xml = XmlUtil.handlingXml(xml);
AbstractMX abstractMX = AbstractMX.parse(xml); AbstractMX abstractMX = AbstractMX.parse(xml);
String messageType = (abstractMX.getMxId().getBusinessProcess().name() String messageType = (abstractMX.getMxId().getBusinessProcess().name()
+ "." + "."
...@@ -43,24 +45,4 @@ public class Mx2MapCreatorManager { ...@@ -43,24 +45,4 @@ public class Mx2MapCreatorManager {
throw new SwiftException("无效的报文类型"); 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 { ...@@ -2069,6 +2069,10 @@ public abstract class AbstractMx2MtTagsGenerate implements Mx2MtTagsGenerate {
mtNameAndAddress += Mx2MtConstants.NEW_LINE + mtCode4 + Mx2MtConstants.NEW_LINE + mtCode5; mtNameAndAddress += Mx2MtConstants.NEW_LINE + mtCode4 + Mx2MtConstants.NEW_LINE + mtCode5;
addLines += 2; addLines += 2;
} }
if (StringUtil.isNotEmpty(mtCode8) && addLines < remainLines) {
addLines++;
mtNameAndAddress += Mx2MtConstants.NEW_LINE + mtCode8;
}
if (StringUtil.isNotEmpty(mtCode6) && addLines < remainLines) { if (StringUtil.isNotEmpty(mtCode6) && addLines < remainLines) {
addLines++; addLines++;
mtNameAndAddress += Mx2MtConstants.NEW_LINE + mtCode6; mtNameAndAddress += Mx2MtConstants.NEW_LINE + mtCode6;
...@@ -2077,10 +2081,6 @@ public abstract class AbstractMx2MtTagsGenerate implements Mx2MtTagsGenerate { ...@@ -2077,10 +2081,6 @@ public abstract class AbstractMx2MtTagsGenerate implements Mx2MtTagsGenerate {
addLines++; addLines++;
mtNameAndAddress += Mx2MtConstants.NEW_LINE + mtCode7; mtNameAndAddress += Mx2MtConstants.NEW_LINE + mtCode7;
} }
if (StringUtil.isNotEmpty(mtCode8) && addLines < remainLines) {
addLines++;
mtNameAndAddress += Mx2MtConstants.NEW_LINE + mtCode8;
}
} }
} }
return mtNameAndAddress; return mtNameAndAddress;
......
...@@ -26,13 +26,14 @@ import org.dom4j.DocumentHelper; ...@@ -26,13 +26,14 @@ import org.dom4j.DocumentHelper;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.util.Map; import java.util.Map;
public class Mx2MtCreatorManager { public class Mx2MtCreatorManager {
public SwiftTranslationReport mx2Mt(String xml, String fileOutputPath, Map<String, Object> extraMap) throws SwiftException { public SwiftTranslationReport mx2Mt(String xml, String fileOutputPath, Map<String, Object> extraMap) throws SwiftException {
try { try {
xml = handlingXml(xml); xml = XmlUtil.handlingXml(xml);
AbstractMX abstractMX = AbstractMX.parse(xml); AbstractMX abstractMX = AbstractMX.parse(xml);
String messageType = (abstractMX.getMxId().getBusinessProcess().name() String messageType = (abstractMX.getMxId().getBusinessProcess().name()
+ "." + "."
...@@ -153,24 +154,4 @@ public class Mx2MtCreatorManager { ...@@ -153,24 +154,4 @@ public class Mx2MtCreatorManager {
} }
return messageType; 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; ...@@ -13,6 +13,7 @@ import com.prowidesoftware.swift.model.mt.AbstractMT;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -440,24 +441,4 @@ public class MxMessageReader { ...@@ -440,24 +441,4 @@ public class MxMessageReader {
throw new SwiftException(e.getMessage()); 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; package com.brilliance.swift.util;
import com.brilliance.swift.SwiftTransfer;
import org.dom4j.*; import org.dom4j.*;
import org.dom4j.io.SAXReader; 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.io.File;
import java.net.URL; import java.net.URL;
import java.util.HashMap; import java.util.HashMap;
...@@ -199,4 +203,24 @@ public class XmlUtil { ...@@ -199,4 +203,24 @@ public class XmlUtil {
xmlStr = xmlStr.replaceAll("xmlns:([\\w]*)", "xmlns"); xmlStr = xmlStr.replaceAll("xmlns:([\\w]*)", "xmlns");
return xmlStr; 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