XmlWriter 将所有内容写入一行
XmlWriter writing everything to a single line
我正在写一个 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();
XmlWriter.Create(string) 方法的文档说:
An XmlWriterSettings object with default settings is used to create
the writer. If you wish to specify the features to support on the
created writer, use the overload that takes an XmlWriterSettings
object as one of its arguments, and pass in a XmlWriterSettings object
with the correct settings.
显然,默认设置不是您想要的。
您必须使用 XmlWriterSettings class:
定义所需的编写器行为
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
// other settings...
XmlWriter xmlWriter = XmlWriter.Create(exportFile, settings);
您可以定义很多属性来调整生成的输出。快速查看文档。
我正在写一个 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();
XmlWriter.Create(string) 方法的文档说:
An XmlWriterSettings object with default settings is used to create the writer. If you wish to specify the features to support on the created writer, use the overload that takes an XmlWriterSettings object as one of its arguments, and pass in a XmlWriterSettings object with the correct settings.
显然,默认设置不是您想要的。
您必须使用 XmlWriterSettings class:
定义所需的编写器行为XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
// other settings...
XmlWriter xmlWriter = XmlWriter.Create(exportFile, settings);
您可以定义很多属性来调整生成的输出。快速查看文档。