Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存不带格式的XML文件_C#_Xmldocument - Fatal编程技术网

C# 保存不带格式的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

我有一个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();
}
 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文件。也许它对你有用。我刚才看到你昨天问了基本相同的问题,但你接受了我的,而不是另一个。我的回答真的对你有用吗?