【问题标题】:XML to Flat File using C#使用 C# 将 XML 转换为平面文件
【发布时间】:2018-07-19 09:16:10
【问题描述】:

我正在使用 XMLDocumnet 创建 XML 文件。但是对于界面,我需要将它们共享为平面文件。 请帮忙。

XmlDocument doc1 = new XmlDocument();
            string loadFilePath = Server.MapPath("~\\temp\\IC35181.xml");
            doc1.Load(loadFilePath);

doc1.Save(Server.MapPath("~\\temp\\IC35181.xml"));

File.Copy(Server.MapPath("~\\temp\\IC35181.xml"), Server.MapPath("~\\temp\\IC35181_" + DateTime.Now.ToString("yyyyMMdd") + "_0" + (++k).ToString().PadLeft(4, '0') + ".xml"), true);

doc1.DocumentElement.ParentNode.RemoveAll();
File.WriteAllText(Server.MapPath("~\\temp\\IC35181.xml"), string.Empty);
File.Copy(Server.MapPath("~\\XMLRootTag.xml"),Server.MapPath("~\\temp\\IC35181.xml"), true);

【问题讨论】:

  • 您遇到的错误是什么
  • 没有出现错误,我正在格式化 XML,但我需要 Flat XML

标签: c# asp.net .net visual-studio .net-4.5


【解决方案1】:

如果您需要控制格式,则不要使用XmlDocument.Save(string path),而是使用XmlDocument.Save(XmlWriter w) - 您必须通过XmlWriter.Create(string, XmlWriterSettings) 创建自己的XmlWriter,即

using(var writer = XmlWriter.Create(Server.MapPath("~\\temp\\IC35181.xml"), yourSettings))
{
    doc1.Save(writer);
}

然后我们需要决定在您的XmlWriterSettings 实例中放入什么格式设置(在示例中为yourSettings)。也许:

var yourSettings = new XmlWriterSettings
{
    Indent = false,
    NewLineHandling = NewLineHandling.None,
    NewLineOnAttributes = false,
};

【讨论】:

    【解决方案2】:

    Marc 的回答也对我有用,但我发现了另外一个对我也有用的属性:

    doc1.PreserveWhitespace = true; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多