Запись строки в XML-файл без форматирования (C #)

#c# #xml #file #whitespace

#c# #xml #файл #пробел

Вопрос:

Я написал функцию, которая создает XML-строку на основе данных, сохраненных в моем приложении. Далее, эта строка должна быть записана в реальный XML-файл, чтобы ее можно было использовать. Затем этот файл будет использоваться в веб-приложении HTML для передачи данных. Для этого я использую следующий фрагмент кода:

 xmlDoc.Save("exercise.xml");
  

Достаточно просто, но есть небольшая загвоздка.
Мой XML-файл не будет работать должным образом в Firefox, поскольку он рассматривает пробелы как дочерний узел.
Переписывать все мое веб-приложение практически невозможно, так как это потребовало бы слишком много работы.
Я бы предпочел просто иметь возможность сохранять мою XML-строку в XML-файл неформатированным способом, поскольку я протестировал и подтвердил, что это работает практически во всех мыслимых браузерах.
Сама строка не содержит никаких возвратов каретки или табуляций, поэтому метод Save(), вероятно, добавляет ее автоматически. Есть какой-нибудь способ предотвратить это или другой простой способ обойти это?

Комментарии:

1. Пожалуйста, не могли бы вы опубликовать пример или XML, который вы сохраняете в файл.

Ответ №1:

Взгляните на этот XmlDocument.Сохранение перегружено. Вот полный пример кода, который сохраняет XML без пробельных отступов:

 using (XmlWriter xw = XmlWriter.Create("exercise.xml", new XmlWriterSettings { Indent = false }))
    doc.Save(xw);
  

Ответ №2:

Попробуйте

 xDoc.PreserveWhitespace = true;
xDoc.Save(...);
  

Ответ №3:

У вас есть строка, содержащая рабочий xml, почему вы не можете просто перенести ее в файл напрямую, используя TextWriter / StreamWriter?

Комментарии:

1. Честно говоря, прошло много времени с тех пор, как я в последний раз использовал Text / StreamWriter (прошло несколько месяцев с тех пор, как я вообще писал какой-либо код на C #), и у меня уже работала запись XML-файла, поэтому я надеялся на быстрое исправление. Но ваша точка зрения, конечно, верна, спасибо за ввод.

Ответ №4:

Я признаю, что не тестировал это, но, надеюсь, это даст вам подсказку к окончательному решению

 var xws = new XmlWriterSettings
{ 
    Indent = false, 
    NewLineOnAttributes = false 
};

using (var xtw = XmlTextWriter.Create("exercise.xml", xws))
{
    xmlDoc.Save(xtw);
}
  

Ответ №5:

Вы пробовали просто записать свою строку, которую вы встроили в файл? Что-то вроде этого:

 var myXML= "<root><node>something something something dark side</node></root>";
var file = new System.IO.StreamWriter("c:\file.xml");
file.WriteLine(myXML);
file.Close();
  

Комментарии:

1. Я думаю, что ответ Zruty лучше, но я оставлю свой на всякий случай.

2. Я думал, что это заняло бы намного больше строк кода, спасибо за пример!