我有一个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");
该如何执行而不必创建新文档?
答案 0 :(得分:1)
如果您要通过不格式化XML文件来消除多余的空间,则可以使用XmlWriterSettings
和XmlWriter
,如下所示:
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文件而不对其进行格式化。