#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. Я думал, что это заняло бы намного больше строк кода, спасибо за пример!