Избегайте возврата каретки при написании InnerText в элементах xml с использованием System.Xml.XmlWriter - PullRequest
0 голосов
/ 04 августа 2010

Я использую XmlWriter для сохранения XmlDocument в .Net. Однако все элементы, имеющие InnerText, записываются с окружающими символами возврата каретки.

Я пытался использовать XmlWriterSettings, чтобы избежать написания этих символов, но пока не повезло.

Вот фрагмент кода:

        XmlDocument outXml = new XmlDocument();
        outXml.AppendChild .......
        XmlWriterSettings sets = new XmlWriterSettings();
        sets.Encoding = encoding;
        sets.Indent = true;
        XmlWriter xwriter = XmlWriter.Create(file, sets);
        outXml.Save(xwriter);
        xwriter.Close();

Вывод xml выглядит так:

  <String Id="msierrXmlFileFailedSave" Overridable="yes">
    Fehler beim Speichern der Einstellungen-Datei.
  </String>

Требуемый вывод xml должен выглядеть следующим образом:

  <String Id="msierrXmlFileFailedSave" Overridable="yes">Fehler beim Speichern der Einstellungen-Datei.</String>

Есть ли способ избежать записи этих возвратов каретки внутри элементов?

PD: я видел противоположный вопрос об этой проблеме, но решение не применимо к этому делу.

Заранее спасибо.

Allan.c

1 Ответ

1 голос
/ 04 августа 2010

Вам нужно установить свойство XmlDocument.PreserveWhitespace перед вызовом Save.Другой вариант - использовать разделы CData вместо внутреннего текста, где текстовое содержимое элементов должно быть точно сохранено.

Из документации:

Если PreserveWhitespace имеет значение true перед загрузкой илиВызывается LoadXml, узлы пробелов сохраняются;в противном случае, если это свойство имеет значение false, значительный пробел сохраняется, а пробел - нет.

Если PreserveWhitespace имеет значение true до вызова Save, пробел в документе сохраняется в выходных данных;в противном случае, если это свойство имеет значение false, XmlDocument автоматически вставляет отступ в вывод.

...