【问题标题】:What are some resources I can follow to create a program that writes an XML file using STREAM? [closed]我可以遵循哪些资源来创建使用 STREAM 编写 XML 文件的程序? [关闭]
【发布时间】:2017-11-27 19:34:31
【问题描述】:
这是我的功课。我需要使用 STREAM 方法将我的数据写入 XML 文件 invoiceData.xml。我已经完成了一个使用 DOM 方法从 XML 文件中读取的程序,如果告诉你它有帮助的话。 :)
所以请帮助我,我们将不胜感激。
【问题讨论】:
标签:
c#
xml
visual-studio
stream
【解决方案1】:
中级:
using(var writer = XmlWriter.Create(stream)) { /* your code here */ }
你已经准备好了;但是,我认为即使这对于大多数情况来说也不必要地过度复杂化。如果您在内存中有数据,我更典型的做法是让 XmlSerializer 担心这一点:
var ser = new XmlSerializer(obj.GetType());
ser.Serialize(stream, obj);
所以:google XmlSerializer 和 XmlWriter :) 都在 MSDN 上
【解决方案2】:
正如@MarkGravell 在其他答案中所建议的,XmlSerializer 是更好的选择。
XmlSerializerNamespaces xmlSerializerNamespaces = new XmlSerializerNamespaces();
xmlSerializerNamespaces.Add("", "");
XmlSerializer xmlSerializer = new XmlSerializer(typeof(YourClass));
using(FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None, BufferSize, FileOptions.WriteThrough))
{
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
xmlWriterSettings.Indent = true;
xmlWriterSettings.NewLineOnAttributes = true;
XmlWriter xmlWriter = XmlWriter.Create(fileStream, xmlWriterSettings);
xmlSerializer.Serialize(xmlWriter, yourClassInstance, xmlSerializerNamespaces);
}