我正在写一个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();
Run Code Online (Sandbox Code Playgroud)
XmlWriter.Create(string)方法的文档说:
具有默认设置的XmlWriterSettings对象用于创建编写器.如果要在创建的编写器上指定要支持的功能,请使用将XmlWriterSettings对象作为其参数之一的重载,并使用正确的设置传入XmlWriterSettings对象.
显然,默认设置不是您想要的.
您必须使用XmlWriterSettings类定义所需的编写器行为:
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
// other settings...
XmlWriter xmlWriter = XmlWriter.Create(exportFile, settings);
Run Code Online (Sandbox Code Playgroud)
您可以定义很多属性来调整生成的输出.快速浏览一下文档.