Как вставить локальную строковую переменную в метод TextWriter Writeline без прерывания строки? - PullRequest
1 голос
/ 29 декабря 2011

Я пытаюсь вставить проанализированный XML-элемент в середину TextWriter WriteLine, не вызывая разрыв строки при добавлении переменной, но безуспешно.Цель программы - преобразовать файл XML в файл .txt в формате EDI X12 850, и мне нужно сохранить строки в соответствии с методами WriteLine.Я не уверен, что это самый эффективный способ сделать перевод, так как я только одну неделю в моей карьере C #, но другие мои попытки использовать файлы xslt оказались неэффективными.Любое руководство будет с благодарностью.Ниже приведен код моего переводчика.

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~");
        }
    }
}

}

1 Ответ

3 голосов
/ 29 декабря 2011

Вы делаете

name.AppendLine(reader.ReadElementContentAsString())

Что вы должны добавить новую строку.Может быть, вместо этого попробуйте просто

name.Append(reader.ReadElementContentAsString()) 

?

РЕДАКТИРОВАТЬ: Хотя для name вообще не обязательно быть строителем строк.Может быть, просто сделать это строкой?

В таком случае вы могли бы просто сделать

name = reader.ReadElementContentAsString()
...