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

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

xmlDoc.Save("exercise.xml");

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

Ответы [ 5 ]

9 голосов
/ 13 мая 2011

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

using (XmlWriter xw = XmlWriter.Create("exercise.xml", new XmlWriterSettings { Indent = false }))
    doc.Save(xw);
3 голосов
/ 13 мая 2011

Попробуйте

xDoc.PreserveWhitespace = true;
xDoc.Save(...);
1 голос
/ 13 мая 2011

Вы пытались просто записать свою строку, которую вы создали, в файл? Примерно так:

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 голос
/ 13 мая 2011

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

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

using (var xtw = XmlTextWriter.Create("exercise.xml", xws))
{
    xmlDoc.Save(xtw);
}
1 голос
/ 13 мая 2011

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

...