1-) C# RMOS - Mt940 parser
Install-Package SharpMt940Lib.Core -Version 1.0.2
private CustomerStatementMessage GetMT940ToXML(string filename)
{
// ANSI gönderilen dosya formatlarını "ISO-8859-9" olarak okuyoruz.
var detectedEncoding = DetectFileEncoding(File.OpenRead(filename));
try
{
using (var ms = new MemoryStream())
using (var sw = new StreamWriter(ms))
{
sw.Write("STARTUMSE\n");
using (var sr = new StreamReader(filename, detectedEncoding))
{
string line;
while ((line = sr.ReadLine()) != null)
{
if (line.StartsWith(":60:"))// 60m, 60F yada 60M olmalı
line = line.Replace(":60:", ":60F:");
if (line.StartsWith(":61:"))//Tarihler arasında "/" olmamalı.
line = line.Replace("//", "*RMOS*").Replace("/", "").Replace("*RMOS*", "//");
if (line.StartsWith(":62:"))// 62m, 62F yada 62M olmalı
line = line.Replace(":62:", ":62F:");
sw.WriteLine(line);
}
}
sw.Write("-");
sw.Flush();
ms.Seek(0, SeekOrigin.Begin);
StreamReader reader = new StreamReader(ms)
;
var header = new Raptorious.SharpMt940Lib.Mt940Format.Separator("STARTUMSE");
var trailer = new Raptorious.SharpMt940Lib.Mt940Format.Separator("-");
var genericFomat = new Raptorious.SharpMt940Lib.Mt940Format.GenericFormat(header, trailer);
var liste = Mt940Parser.Parse(genericFomat, reader, CultureInfo.CurrentCulture);
return liste.FirstOrDefault();
}
}
catch (Exception ex)
{
MessageBox.Show("MT940 Dönüştürülemedi. Sebebi:" + ex.Message + Environment.NewLine + filename);
return null;
}
}
public Encoding DetectFileEncoding(Stream fileStream)
{
var Utf8EncodingVerifier = Encoding.GetEncoding("utf-8", new EncoderExceptionFallback(), new DecoderExceptionFallback());
using (var reader = new StreamReader(fileStream, Utf8EncodingVerifier,
detectEncodingFromByteOrderMarks: true, leaveOpen: true, bufferSize: 1024))
{
Encoding detectedEncoding;
try
{
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
}
detectedEncoding = Encoding.UTF8;
}
catch (Exception e)
{
detectedEncoding = Encoding.GetEncoding("ISO-8859-9");
}
fileStream.Seek(0, SeekOrigin.Begin);
return detectedEncoding;
}
}