保存XML文件而不格式化

时间:2018-11-28 11:49:01

标签: c# xmldocument

我有一个XML文件,该文件需要保存而无需格式化,没有标识和换行符。我这样做是这样的:

using (var writer = System.IO.File.CreateText("E:\\nfse.xml"))
{
    var doc = new XmlDocument { PreserveWhitespace = false };
    doc.Load("E:\\notafinal.xml");
    writer.WriteLine(doc.InnerXml);
    writer.Flush();
}

但是,这样一来,我需要创建文件,然后将其更改3次,因此最终总共有4个文件,其中一个是初始文件,最后是3个结果。

保存文件时,我是这样进行的:

 MemoryStream stream = stringToStream(soapEnvelope);
 webRequest.ContentLength = stream.Length;
 Stream requestStream = webRequest.GetRequestStream();
 stream.WriteTo(requestStream);

 document.LoadXml(soapEnvelope);
 document.PreserveWhitespace = false;
 document.Save(@"E:\\notafinal.xml");

该如何执行而不必创建新文档?

1 个答案:

答案 0 :(得分:1)

如果您要通过不格式化XML文件来消除多余的空间,则可以使用XmlWriterSettingsXmlWriter,如下所示:

public void SaveXmlDocToFile(XmlDocument xmlDoc,
                             string outputFileName,
                             bool formatXmlFile = false)
{
   var settings = new XmlWriterSettings();
   if (formatXmlFile)
   {
      settings.Indent = true;
   }
   else
   {
      settings.Indent = false;
      settings.NewLineChars = String.Empty;
   }
   using (var writer = XmlWriter.Create(outputFileName, settings))
      xmlDoc.Save(writer);
}

在参数中传递formatXmlFile = false将保存XML文件而不对其进行格式化。