转换工具 2.1改进版

处理msgin报文:

package utils;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/*
将Excel报文的前7列复制到txt2Xml目录下分别以交易代码命名的txt文件,
可以是多个,例如同时新建1301.txt和1302.txt,运行代码,
在1301和1302交易目录(注意修改路径)下生成1301.msgin和1302.msgin。
注意:txt2XmlIn文件下不要有其他文件或文件夹
*/

public class Txt2XmlIn {
	public static void readTxtFile(String filePath1, String fileName, String filePath2) {
		try {
			/*FileReader reader = new FileReader(filePath1);
			FileWriter writer = new FileWriter(filePath2, true);*/
			/*转换流*/
			String encoding = "GBK";
			File file1 = new File(filePath1);
			File file2 = new File(filePath2);
			InputStreamReader reader = new InputStreamReader(new FileInputStream(file1), encoding);
			OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file2), encoding);
			BufferedReader br = new BufferedReader(reader);
			BufferedWriter bw = new BufferedWriter(writer);
			String lineTxt;
			StringBuilder content1 = new StringBuilder("");
			content1.append(
					"<?xml version=\"1.0\" encoding=\"gb2312\" ?>" + "\n" +
					"<msg>" + "\n" +
					"<basic-info>" + "\n" +
					"<name>"+fileName+".msgin</name>" + "\n" +
							"<author></author>" + "\n" +
							"<date></date>" + "\n" +
							"<modifier></modifier>" + "\n" +
							"<modifyDate></modifyDate>" + "\n" +
							"<type>IN</type>" + "\n" +
							"<desc>"+fileName+".msgin</desc>" + "\n" +
									"<event_class_name></event_class_name>" + "\n" +
									"<protocal>TCP</protocal>" + "\n" +
									"</basic-info>" + "\n" +
									"<msg-content>" + 
									"\n");
			bw.write(content1.toString());
			while ((lineTxt = br.readLine()) != null) {
				String[] result = getXMLcode(lineTxt);
				StringBuilder content = new StringBuilder("");
				if (result[2] == null)
					content.append(
								"<var namespace=\"\" expr=\"" 
								+ result[1] 
								+ "\" desc=\"\" lentype=\"VARLEN\" len=\"" 
								+ result[6]
								+ "\" loc=\"\" align=\"LEFT\" fill=\"#20\" compart=\"\" class=\"\" handleprocess=\"\" argvar=\"\" mac=\"\" />"
								+ "\n"
								);
				else
					content.append(
								"<var namespace=\"\" expr=\"" 
								+ result[1] 
								+ "\" desc=\"" 
								+ result[2]
								+ "\" lentype=\"VARLEN\" len=\"" 
								+ result[6]
								+ "\" loc=\"\" align=\"LEFT\" fill=\"#20\" compart=\"\" class=\"\" handleprocess=\"\" argvar=\"\" mac=\"\" />"
								+ "\n"
								);
				bw.write(content.toString());
			}
			StringBuilder content2 = new StringBuilder("");
			content2.append(
					"</msg-content>" +
					"</msg>"
					);
			bw.write(content2.toString());
			br.close();
			bw.close();
		} catch (Exception e) {
			System.out.println("读取文件内容出错");
			e.printStackTrace();
		}
	}

	public static String[] getXMLcode(String str) {
		String[] result = new String[7];
		int st = 0, index = 0;
		for (int i = 0; i < str.length(); i++) {
			if (str.charAt(i) == '\t' || i == str.length() - 1) {
				if (i == str.length() - 1)
					result[index++] = str.substring(st, i + 1);
				else
					result[index++] = str.substring(st, i);
				st = i + 1;
			}
		}
		return result;
	}

	// 获取不带后缀名的文件名
	public static String getFileNameWithoutSuffix(String file_name) {
		return file_name.substring(0, file_name.lastIndexOf("."));
	}

	public static void main(String[] args) {
		/* txt文件目录 */
		String fileDirectory1 = "C:/Users/wasdw/Desktop/txt2XmlIn/";
		File file = new File(fileDirectory1);
		if (!file.isDirectory()) {
			System.out.println("目录不存在");
			return;
		}
		String[] fileName = file.list();
		for (String perFileName : fileName) {
			System.out.println("读取 " + getFileNameWithoutSuffix(perFileName) + " msgin型交易报文数据...");
			/* xml文件目录 */
			String fileDirectory2 = 
				"C:/Users/wasdw/desktop/nantian/ABSIDE/workspace/ABS50_DEMO工程/abs01/com/nantian/abs40/transaction/yibentong/T" + getFileNameWithoutSuffix(perFileName) + "/";
			readTxtFile(
						fileDirectory1 + perFileName, 
						getFileNameWithoutSuffix(perFileName) ,
						fileDirectory2 + "/" + getFileNameWithoutSuffix(perFileName)
						+ ".msgin");
			System.out.println("在 " + fileDirectory2 + " 下生成 "+ getFileNameWithoutSuffix(perFileName) + ".msgin 报文文件");
		}
	}
}

 处理msgout报文:

package utils;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/*
将Excel报文的前7列复制到txt2Xml目录下分别以交易代码命名的txt文件,
可以是多个,例如同时新建1301.txt和1302.txt,运行代码,
在1301和1302交易目录(注意修改路径)下生成1301.msgout和1302.msgout。
注意:txt2XmlOut文件下不要有其他文件或文件夹
*/

public class Txt2XmlOut {
	public static void readTxtFile(String filePath1, String fileName, String filePath2) {
		try {
			/*FileReader reader = new FileReader(filePath1);
			FileWriter writer = new FileWriter(filePath2, true);*/
			/*转换流*/
			String encoding = "GBK";
			File file1 = new File(filePath1);
			File file2 = new File(filePath2);
			InputStreamReader reader = new InputStreamReader(new FileInputStream(file1), encoding);
			OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file2), encoding);
			BufferedReader br = new BufferedReader(reader);
			BufferedWriter bw = new BufferedWriter(writer);
			String lineTxt;
			StringBuilder content1 = new StringBuilder("");
			content1.append(
					"<?xml version=\"1.0\" encoding=\"gb2312\" ?>" + "\n" +
					"<msg>" + "\n" +
					"<basic-info>" + "\n" +
					"<name>"+fileName+".msgin</name>" + "\n" +
							"<author></author>" + "\n" +
							"<date></date>" + "\n" +
							"<modifier></modifier>" + "\n" +
							"<modifyDate></modifyDate>" + "\n" +
							"<type>OUT</type>" + "\n" +
							"<desc>"+fileName+".msgout</desc>" + "\n" +
									"<event_class_name></event_class_name>" + "\n" +
									"<protocal>TCP</protocal>" + "\n" +
									"</basic-info>" + "\n" +
									"<msg-content>" + 
									"\n");
			bw.write(content1.toString());
			while ((lineTxt = br.readLine()) != null) {
				String[] result = getXMLcode(lineTxt);
				StringBuilder content = new StringBuilder("");
				if (result[2] == null)
					content.append(
								"<var namespace=\"\" expr=\"" 
								+ result[1] 
								+ "\" desc=\"\" lentype=\"VARLEN\" len=\"" 
								+ result[6]
								+ "\" loc=\"\" align=\"LEFT\" fill=\"#20\" compart=\"\" class=\"\" handleprocess=\"\" argvar=\"\" mac=\"\" />"
								+ "\n"
								);
				else
					content.append(
								"<var namespace=\"\" expr=\"" 
								+ result[1] 
								+ "\" desc=\"" 
								+ result[2]
								+ "\" lentype=\"VARLEN\" len=\"" 
								+ result[6]
								+ "\" loc=\"\" align=\"LEFT\" fill=\"#20\" compart=\"\" class=\"\" handleprocess=\"\" argvar=\"\" mac=\"\" />"
								+ "\n"
								);
				bw.write(content.toString());
			}
			StringBuilder content2 = new StringBuilder("");
			content2.append(
					"</msg-content>" +
					"</msg>"
					);
			bw.write(content2.toString());
			br.close();
			bw.close();
		} catch (Exception e) {
			System.out.println("读取文件内容出错");
			e.printStackTrace();
		}
	}

	public static String[] getXMLcode(String str) {
		String[] result = new String[7];
		int st = 0, index = 0;
		for (int i = 0; i < str.length(); i++) {
			if (str.charAt(i) == '\t' || i == str.length() - 1) {
				if (i == str.length() - 1)
					result[index++] = str.substring(st, i + 1);
				else
					result[index++] = str.substring(st, i);
				st = i + 1;
			}
		}
		return result;
	}

	// 获取不带后缀名的文件名
	public static String getFileNameWithoutSuffix(String file_name) {
		return file_name.substring(0, file_name.lastIndexOf("."));
	}

	public static void main(String[] args) {
		/* txt文件目录 */
		String fileDirectory1 = "C:/Users/wasdw/Desktop/txt2XmlOut/";
		File file = new File(fileDirectory1);
		if (!file.isDirectory()) {
			System.out.println("目录不存在");
			return;
		}
		String[] fileName = file.list();
		for (String perFileName : fileName) {
			System.out.println("正在读取 " + getFileNameWithoutSuffix(perFileName) + " msgout型交易报文数据...");
			/* xml文件目录 */
			String fileDirectory2 = 
				"C:/Users/wasdw/desktop/nantian/ABSIDE/workspace/ABS50_DEMO工程/abs01/com/nantian/abs40/transaction/yibentong/T" + getFileNameWithoutSuffix(perFileName) + "/";
			readTxtFile(
						fileDirectory1 + perFileName, 
						getFileNameWithoutSuffix(perFileName) ,
						fileDirectory2 + "/" + getFileNameWithoutSuffix(perFileName)
						+ ".msgout");
			System.out.println("在 " + fileDirectory2 + " 下生成 "+ getFileNameWithoutSuffix(perFileName) + ".msgout 报文文件");
		}
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值