Сохраните пробелы в строке с помощью XmlTextWriter.WriteString

StackOverflow https://stackoverflow.com/questions/205287

  •  03-07-2019
  •  | 
  •  

Вопрос

Я пишу XML-документ на C #.

У меня есть что-то вроде этого...

string output = "REAPP DUE  NO OF  M CASE NBR   APPL NBR      DATE  GRPS   M CASE NBR   APPL NBR      DATE  GRPS   _                                       _                                       _";

и я делаю это...

        objXmlTextWriter.WriteStartElement("Case");
        objXmlTextWriter.WriteString(record);
        objXmlTextWriter.WriteEndElement();  

и xml-элемент получается вот таким...

<Case>REAPP DUE NO OF REAPP DUE NO OF M CASE NBR APPL NBR DATE GRPS M CASE NBR APPL NBR DATE GRPS _ _ _ </Case>

Он в основном преобразовал пробелы длиной, превышающей 1, в 1 символ пробела.

Как мне предотвратить это?

Это было полезно?

Решение

Извините, запутался раньше (удалил неправильный ответ).Но я не могу воспроизвести то, что вы, кажется, видите.Проверьте эту программу...это действительно сохраняет пробелы.

class Program
{
    static void Main(string[] args)
    {

        XmlWriter w = XmlTextWriter.Create("./foo.xml");
        w.WriteStartElement("foo");
        w.WriteString(" THIS   HAS VARYING     SPACeS ");
        w.WriteEndElement();
        w.Close();

        StreamReader sr = new StreamReader("./foo.xml");
        Console.WriteLine(sr.ReadToEnd());
        Console.ReadKey();
    }
}

Другие советы

ОК...

Это всего лишь проблема с отображением IE.Наверное, это как-то связано со шрифтом.

Когда я открываю XML в notepad ++, я вижу, что пробел действительно сохранен должным образом.

Вместо WriteString() вы могли бы использовать WriteCData(), чтобы заключить текст в блок CDATA, если важно отображение в IE.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top