public static void Main()
string edi = "ISA*00* *00* *02*MINE *ZZ*YOUR *170110*2107*U*00501*800003725*0*P~ GS*SM*MINE*YOUR*20170110*2107*3726*X*005010~ ST*204*3726~ B2****678912**PP~ B2A*00*LT~ L11*12345678*CO~ N1*SL**93*09~ N3*1234 LINCOLN HWY~ N4*BEDFORD*PA*15522*USA~ S5*1*CL~ L5***16727251*Z**F1MA000013336881*SM~ AT8****3~ SE*24*3726~ GE*1*3726~ IEA*1*800003725~";
string sRet = string.Empty;
sRet=GenerateStringFromStream(ConvertEdiToXml(GenerateStreamFromString(edi)));
Assert.AreEqual(sRet, "<root><ISA><ISA01>00</ISA01><ISA03>00</ISA03><ISA05>02</ISA05><ISA06>MINE</ISA06><ISA07>ZZ</ISA07><ISA08>YOUR</ISA08><ISA09>170110</ISA09><ISA10>2107</ISA10><ISA11>U</ISA11><ISA12>00501</ISA12><ISA13>800003725</ISA13><ISA14>0</ISA14><ISA15>P</ISA15></ISA><GS><GS01>SM</GS01><GS02>MINE</GS02><GS03>YOUR</GS03><GS04>20170110</GS04><GS05>2107</GS05><GS06>3726</GS06><GS07>X</GS07><GS08>005010</GS08></GS><ST><ST01>204</ST01><ST02>3726</ST02></ST><B2><B204>678912</B204><B206>PP</B206></B2><B2A><B2A01>00</B2A01><B2A02>LT</B2A02></B2A><L11><L1101>12345678</L1101><L1102>CO</L1102></L11><N1><N101>SL</N101><N103>93</N103><N104>09</N104></N1><N3><N301>1234 LINCOLN HWY</N301></N3><N4><N401>BEDFORD</N401><N402>PA</N402><N403>15522</N403><N404>USA</N404></N4><S5><S501>1</S501><S502>CL</S502></S5><L5><L503>16727251</L503><L504>Z</L504><L506>F1MA000013336881</L506><L507>SM</L507></L5><AT8><AT804>3</AT804></AT8><SE><SE01>24</SE01><SE02>3726</SE02></SE><GE><GE01>1</GE01><GE02>3726</GE02></GE><IEA><IEA01>1</IEA01><IEA02>800003725</IEA02></IEA></root>");
Console.WriteLine("done");
#region "Private Methods"
private static string GenerateStringFromStream(MemoryStream strm)
string strResult=string.Empty;
MemoryStream stream = strm;
var sr = new StreamReader(stream);
strResult = sr.ReadToEnd();
private static MemoryStream GenerateStreamFromString(string s)
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
public static MemoryStream ConvertEdiToXml(MemoryStream edi)
System.IO.MemoryStream stream=new MemoryStream();
string strXML=string.Empty;
string strEDI = GenerateStringFromStream(edi);
string[] tags = strEDI.Split('~');
string tagValue=string.Empty;
foreach (string tag in tags)
string[] childTags = tag.Split('*');
foreach (string cTag in childTags)
if(cTag.Trim()!="" || cTag.Trim()!=string.Empty)
strXML=strXML + "<" + tagValue + "0" + colID.ToString() + ">" + cTag.Trim() + "</" + tagValue + "0" + colID.ToString() + ">";
strXML=strXML + "<" + cTag.Trim() + ">";
strXML=strXML + "</" + childTags[0] + ">";
strXML=strXML + "</root>";
stream= GenerateStreamFromString(strXML);