2011-12-29 27 views
1

我正在嘗試將解析的XML元素插入到TextWriter WriteLine的中間,而不會導致添加變量的換行符,但沒有成功。該程序的目的是將XML文件轉換爲X12 850 EDI格式的.txt文件,並且需要保留WriteLine方法所規定的行。我不確定這是進行翻譯的最有效的方式,因爲我只有一個星期到我的C#職業生涯,但我使用xslt文件的其他嘗試已被證明效率低下。任何指導將不勝感激。以下是我的翻譯員的代碼。如何在不引起換行的情況下將本地字符串變量插入TextWriter Writeline方法?

class Class1 
{ 


    public static void Main() 
    { 

     StringBuilder name = new StringBuilder(); 

     String xmlString = ("3.xml"); 

     using (XmlReader reader = XmlReader.Create(new StreamReader(xmlString))) 
     { 
      reader.ReadToFollowing("Name"); 
      name.AppendLine(reader.ReadElementContentAsString()); 

     } 

     using (StreamWriter sw = new StreamWriter("test5.txt")) 
     { 
      sw.WriteLine("ISA*00*   *00*   *ZZ*daisywebstore *12*5016361200  *11213*1022*U*00400*000001649*0*P*>~"); 
      sw.WriteLine("GS*PO*9254291001*5016361200*20111213*1022*1649*X*004010~"); 
      sw.WriteLine("ST*850*0001~"); 
      sw.WriteLine("BEG*00*SA*08272225944**20111213~"); 
      sw.WriteLine("REF*DP*089~"); 
      sw.WriteLine("DTM*002*20120104~"); 
      sw.WriteLine("N1*ST*" + name + "~"); 
      sw.WriteLine("N3*1400 S MC CARREN BLVD~"); 
      sw.WriteLine("SN4*SPARKS*NV*894316301~"); 
      sw.WriteLine("N1*RE**92*00103653341~"); 
      sw.WriteLine("PO1*1*6*EA*33.28*TE*IN*081643211*UP*30039256056937~"); 
      sw.WriteLine("PID*F****CO2 BB PISTOL  $ 5693~"); 
      sw.WriteLine("PO4*3*1*EA~"); 
      sw.WriteLine("CTT*1~"); 
      sw.WriteLine("AMT*1*199.68~"); 
      sw.WriteLine("SE*16*0001~"); 
     } 
    } 
} 

}

回答

3

你正在做

name.AppendLine(reader.ReadElementContentAsString()) 

您shouldexpect添加一個新的生產線。也許試試只是

name.Append(reader.ReadElementContentAsString()) 

取而代之?

編輯: 雖然名稱似乎沒有必要成爲一個stringbuilder。也許只是讓它成爲一個字符串?

在這種情況下,你可能只是做

name = reader.ReadElementContentAsString() 
+0

你是正確的。從Append方法中刪除行更正了問題。我看不到樹林。我意識到我的編碼可能有點冗長,並且我試圖儘可能高效地做我想做的事情,所以我會嘗試刪除StringBuilder。感謝您的突破。 – 2011-12-29 05:02:16

+0

我的榮幸 - 請記住標記正確答案!祝你好運! – 2011-12-29 06:22:13