C# 保存不带格式的XML文件
我有一个XML文件,需要保存时不带格式、不带标识和换行符。我是这样做的:C# 保存不带格式的XML文件,c#,xmldocument,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.Flus
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();
}
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");
但这样我需要创建文件,然后我需要更改3次,因此最终总共有4个文件,初始文件和3次更改的结果
保存文件时,我会这样做:
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();
}
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");
如何在不创建新文档的情况下执行此操作?如果您希望通过不格式化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文件而不格式化它。覆盖该文件?是的,但是对于没有跳行的表单,我在创建新表单时也会这样做。跳行是什么意思?您的意思是只编辑XML文件中已更改的行?生成XML时,我需要所有内容都在一行中,不要跳过任何行,因为如果发生这种情况,我无法验证签名。它们描述了如何覆盖XML文件。也许它对你有用。我刚才看到你昨天问了基本相同的问题,但你接受了我的,而不是另一个。我的回答真的对你有用吗?