Премахване на връщане на каретка от XML файл C#

Трябва да премахна връщане на каретка от XML файл, но това, което получавам, е само XML файл с едно поле (\r). Написах това:

    string sourceFileName = textBox1.Text;

                     StreamReader sr = new StreamReader(sourceFileName);

                     String line;
                     String newLine = null;
                     // Read and display lines from the file until the end of 
                     // the file is reached.
                     while ((line = sr.ReadLine()) != null)
                     {

                         //Regex regex = new Regex(@"(\r\n|\r|\n)+");

                         newLine = line.Replace("\r\n", String.Empty);
//also tried line.Replace("\n", String.Empty).Replace("\r",String.Empty); , but no use

                         StreamWriter sw = new StreamWriter(@"C:\Users\manish\Desktop\output.xml");
                         sw.WriteLine(newLine);
                         sw.Close();
    }

Какъв може да е проблема тук.

РЕДАКТИРАНЕ:

Ето примера:

3C 3F 78 6D 6C 20 76 65  72 73 69 6F 6E 3D 27 31
30 27 3F 3E 3C 72 6F 6F  74 3E 20 E0 A8 8D E2 80
80 E3 B0 80 E4 8C 80 E4  A4 80 E4 90 80 E3 B8 80
E7 8C 80 E7 8C 80 E5 BC  80 E6 98 80 E6 B0 80 E3
88 80 E7 94 80 E3 8C 80  E5 BC 80 E6 B8 80 E6 88
80 E5 BC 80 E7 94 80 E3  8C 80 E5 BC 80 E6 8C 80
E3 84 80 E3 80 80 E5 BC  80 E7 8C 80 E3 84 80 E3
B0 80 E2 BC 80 E4 8C 80  E4 A4 80 E4 90 80 E3 B8
80 E2 80 80 E0 B4 80 E0  B4 80 0A 20 3C 62 6F 6F
6B 74 69 74 6C 65 3E 3C  21 5B 43 44 41 54 41 5B
5D 5D 3E 3C 2F 62 6F 6F  6B 74 69 74 6C 65 3E 3C
70 61 6E 65 6C 73 3E E0  A8 8D E3 B0 80 E7 80 80

<?xml version='10'?><root> à¨â€€ã°€äŒ€ä¤€ä€ã¸€çŒ€çŒ€å¼€æ˜€æ°€ãˆ€ç”€ãŒ€å¼€æ¸€æˆ€å¼€ç”€ãŒ€å¼€æŒ€ã„€ã€€å¼€çŒ€ã„€ã°€â¼€äŒ€ä¤€ä€ã¸€â€€à´€à´€
 <booktitle><![CDATA[]]></booktitle><panels>à¨ã°€ç€€æ„€æ¸€æ”€æ°€â€€ç€æ¤€ç€æ°€æ”€ã´€âœ€äœ€ä”€ä¼€äœ€åˆ€ä„€å€€ä €å¤€â€€åŒ€ä¬€ä¤€ä°€ä°€äˆ€å”€ä¤€ä°€ä€ä”€åˆ€âœ€ã¸€à´€à´€
<questionsAndAnswers>à¨ã°€æ €æ”€æ„€æ€æ¤€æ¸€æœ€ã¸€ã°€â„€å¬€äŒ€ä€ä„€å€ä„€å¬€ã°€æˆ€ã¸€ä¤€æ¸€ç€æ”€çˆ€ç€€çˆ€æ”€ç€æ¤€æ¸€æœ€â€€ä´€æ„€ç€€çŒ€ã°€â¼€æˆ€ã¸€å´€å´€ã¸€ã°€â¼€æ €æ”€æ„€æ€æ¤€æ¸€æœ€ã¸€à´€à´€
<question><![CDATA[<b>1 Location</b> Why is Arabia's location a good one for trade?]]></question>à¨ã°€æ„€æ¸€çŒ€çœ€æ”€çˆ€â¼€ã¸€à´€à´€
<ansCharCount>350</ansCharCount>à¨ã°€â¼€ç„€ç”€æ”€çŒ€ç€æ¤€æ¼€æ¸€çŒ€ä„€æ¸€æ€ä„€æ¸€çŒ€çœ€æ”€çˆ€çŒ€ã¸€à´€à´€
<questionsAndAnswers>à¨ã°€æ €æ”€æ„€æ€æ¤€æ¸€æœ€ã¸€ã°€â„€å¬€äŒ€ä€ä„€å€ä„€å¬€ã°€æˆ€ã¸€ä¤€æ¸€ç€æ”€çˆ€ç€€çˆ€æ”€ç€æ¤€æ¸€æœ€â€€ä´€æ„€ç€€çŒ€ã°€â¼€æˆ€ã¸€å´€å´€ã¸€ã°€â¼€æ €æ”€æ„€æ€æ¤€æ¸€æœ€ã¸€à´€à´€
<question><![CDATA[<b>2 Movement</b> Why was the location of Mecca ideal for the spread of ideas?]]></question>à¨ã°€æ„€æ¸€çŒ€çœ€æ”€çˆ€â¼€ã¸€à´€à´€
<ansCharCount>350</ansCharCount>à¨ã°€â¼€ç„€ç”€æ”€çŒ€ç€æ¤€æ¼€æ¸€çŒ€ä„€æ¸€æ€ä„€æ¸€çŒ€çœ€æ”€çˆ€çŒ€ã¸€à´€à´€
</panel>à¨ã°€ç€€æ„€æ¸€æ”€æ°€â€€ç€æ¤€ç€æ°€æ”€ã´€âœ€ä´€æ„€æ¤€æ¸€â€€ä¤€æ€æ”€æ„€âœ€ã¸€à´€à´€
<questionsAndAnswers>à¨ã°€æ €æ”€æ„€æ€æ¤€æ¸€æœ€ã¸€ã°€â„€å¬€äŒ€ä€ä„€å€ä„€å¬€å´€å´€ã¸€ã°€â¼€æ €æ”€æ„€æ€æ¤€æ¸€æœ€ã¸€à´€à´€
<question><![CDATA[<b>A Analyzing Primary Sources </b>What kind of teaching does the phrase "the use of the pen†refer to?]]></question>à¨ã°€æ„€æ¸€çŒ€çœ€æ”€çˆ€â¼€ã¸€à´€à´€
<ansCharCount>350</ansCharCount>à¨ã°€â¼€ç„€ç”€æ”€çŒ€ç€æ¤€æ¼€æ¸€çŒ€ä„€æ¸€æ€ä„€æ¸€çŒ€çœ

Изглежда страшно..ха!!


person Assassin    schedule 05.08.2013    source източник
comment
Какво ще кажете за "\n\r"?   -  person Keith Payne    schedule 05.08.2013
comment
Може би sw.WriteLine е проблем. Обърнете внимание на реда в тази команда.   -  person paparazzo    schedule 05.08.2013


Отговори (2)


Вие четете файла ред по ред, така че върнатият ред никога няма да съдържа \r, \n или \r\n - тъй като това са разделители на редове.

Най-простият подход е просто да заредите целия пакет в паметта, да премахнете всички прекъсвания на редовете и след това да го напишете:

string text = File.ReadAllText(sourceFileName);
text = text.Replace("\r", "").Replace("\n", "");
File.WriteAllText(sourceFileName, text);

Разбира се, ако само искате да премахнете връщането на карета, просто премахнете .Replace("\n", "") в горния код.

РЕДАКТИРАНЕ: Сега, когато можем да видим вашия файл, няма XML версия 10, което предполага, че документът е повреден, преди дори да го получите. Трябва да спрете на този етап и да работите назад към източника, докато получите валиден XML файл. Няма смисъл да продължавате с това, което имате в момента.

person Jon Skeet    schedule 05.08.2013
comment
Сега виждам съдържанието, но кутиите (\r) все още се показват в изхода - person Assassin; 05.08.2013
comment
@user1837938: Не, този резултат няма да има няма връщане на каретката. Възможно е да има полета по други причини (напр. текстът не е UTF-8), но те няма да бъдат връщане на каретка. - person Jon Skeet; 05.08.2013
comment
Добре..и какво да опитам за кутиите? - person Assassin; 05.08.2013
comment
@user1837938: Ами трябва да разберете със сигурност какво е вашето кодиране и евентуално да погледнете файла в програма за преглед на двоични файлове, за да видите какво всъщност представляват тези символи в полето в двоичните данни. - person Jon Skeet; 05.08.2013
comment
@user1837938: Да, точно така. - person Jon Skeet; 05.08.2013
comment
@user1837938: Не, трябва да дадете hex стойностите (байтовете, а не как шестнадесетичният редактор избира да ги интерпретира) – и в идеалния случай да ни уведомите в кое кодиране е файлът. Включително XML декларацията също ще помогне. - person Jon Skeet; 05.08.2013
comment
‹?xml version='10'?›, декларацията за кодиране не е посочена във файла. - person Assassin; 05.08.2013
comment
@user1837938: Версия на 10? Наистина ли? Може би не 1.0? ако кодирането не е посочено, то трябва да е UTF-8 или UTF-16. - person Jon Skeet; 05.08.2013
comment
не..това е само 10...добре, да предположим, че е UTF-8, тогава как да продължа? - person Assassin; 05.08.2013
comment
@user1837938: Ами звучи сякаш не е UTF-8... или е хронично повреден. Моля, редактирайте въпроса си с първите (да кажем) 32 байта от файла в шестнадесетичен формат, както и шестнадесетичен раздел със странните знаци, които виждате. - person Jon Skeet; 05.08.2013
comment
Благодаря Джон за отделеното ценно време.. :) - person Assassin; 06.08.2013

Можете да опитате друг начин като този :)

string foo = "First Line\nSecond Line\nThird Line";
foo = foo.Replace("\n", @"\" + "n");

Точката е отделна \ и n(или r,t).

person Kuisin    schedule 31.05.2017