XmlWriter 将所有内容写入一行

问题描述 投票:0回答:1

我正在编写一个 XML 文件,但是当我去读取它时,它都在同一行上。

有人可以看看我的代码并告诉我为什么它全部出现在同一行而不是以正确的格式。

您应该看到的代码正在编写一些节点,然后它正在编写代码、名称、公式等...它还检查数据行 8 及以后的公式是否不重复

var exportFile = "c:\\temp\\export.xml";
XmlWriter xmlWriter = XmlWriter.Create(exportFile);

xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("designExport");
xmlWriter.WriteStartElement("designs");
xmlWriter.WriteStartElement("design");
foreach (DataRow dr in xltbl.Rows)
{
    xmlWriter.WriteStartElement("code");
    xmlWriter.WriteString(dr[0].ToString());
    xmlWriter.WriteEndElement();
    xmlWriter.WriteStartElement("name");
    xmlWriter.WriteString(dr[1].ToString());
    xmlWriter.WriteEndElement();
    for (var i = 2; i < xltbl.Columns.Count; i++)
    {
        if (i >= 8 && dr[i] != dr[i - 8])
        {
            if (string.IsNullOrEmpty(dr[i].ToString())) continue;
            xmlWriter.WriteStartElement("forumula");
            xmlWriter.WriteString(dr[i].ToString());
            xmlWriter.WriteEndElement();
            xmlWriter.WriteStartElement("coverage");
            xmlWriter.WriteString("0");
            xmlWriter.WriteEndElement();
            xmlWriter.WriteStartElement("usageFactor");
            xmlWriter.WriteString("0");
            xmlWriter.WriteEndElement();
        }
    }
}
xmlWriter.WriteEndDocument();
xmlWriter.Close();
c# xml xmlwriter
1个回答
7
投票

XmlWriter.Create(string)
方法的文档说:

具有默认设置的

XmlWriterSettings
对象用于创建 作家。如果您希望指定支持的功能 创建编写器,使用带有
XmlWriterSettings
的重载 对象作为其参数之一,并传入一个
XmlWriterSettings
对象 正确的设置。

显然,默认设置不是你想要的。

您必须使用

XmlWriterSettings
类定义所需的编写器行为:

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
// other settings...

XmlWriter xmlWriter = XmlWriter.Create(exportFile, settings);

您可以定义很多属性来调整生成的输出。快速查看文档。

© www.soinside.com 2019 - 2024. All rights reserved.