我正在将一些数据写入XML文件...但是当我打开它时,所有的值都在一行中......如何以可读格式编写它?即新行和缩进中的每个节点?
FileStream fs = new FileStream("myfile.xml", FileMode.Create);
XmlWriter w = XmlWriter.Create(fs);
w.WriteStartDocument();
w.WriteStartElement("myfile");
w.WriteElementString("id", id.Text);
w.WriteElementString("date", dateTimePicker1.Text);
w.WriteElementString("version", ver.Text);
w.WriteEndElement();
w.WriteEndDocument();
w.Flush();
fs.Close();
Run Code Online (Sandbox Code Playgroud)
Den*_*nis 41
使用XmlTextWriter
替代XmlWriter
然后设置Indentation
属性.
例
string filename = "MyFile.xml";
using (FileStream fileStream = new FileStream(filename, FileMode.Create))
using (StreamWriter sw = new StreamWriter(fileStream))
using (XmlTextWriter xmlWriter = new XmlTextWriter(sw))
{
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.Indentation = 4;
// ... Write elements
}
Run Code Online (Sandbox Code Playgroud)
在@jumbo评论之后,这也可以像在.NET 2中那样实现.
var filename = "MyFile.xml";
var settings = new XmlWriterSettings()
{
Indent = true,
IndentChars = " "
}
using (var w = XmlWriter.Create(filename, settings))
{
// ... Write elements
}
Run Code Online (Sandbox Code Playgroud)
小智 29
您需要首先创建一个指定缩进的XmlWriterSettings对象,然后在创建XmlWriter时,在路径后传入XmlWriterSettings.
另外,我使用该using
块让C#处理我的资源处理,这样我就不用担心在异常时丢失任何资源.
{
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings()
{
Indent = true,
IndentChars = "\t",
NewLineOnAttributes = true
};
using (XmlWriter w= XmlWriter.Create("myfile.xml", xmlWriterSettings))
{
w.WriteStartDocument();
w.WriteStartElement("myfile");
w.WriteElementString("id", id.Text);
w.WriteElementString("date", dateTimePicker1.Text);
w.WriteElementString("version", ver.Text);
w.WriteEndElement();
w.WriteEndDocument();
}
}
Run Code Online (Sandbox Code Playgroud)
检查"设置"属性:
w.Settings.Indent = true;
Run Code Online (Sandbox Code Playgroud)
编辑:您无法直接设置:
System.Xml.XmlWriter.Create("path", new System.Xml.XmlWriterSettings())
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
40654 次 |
最近记录: |