我想知道XmlWriter.WriteStartDocument()和XmlWriter.WriteEndDocument()背后的原因。
在我的场景中,我创建了一个XML文档,其中包含一些数据,例如:
XmlWriter xmlWriter = XmlWriter.Create(file);
xmlWriter.WriteStartDocument();
// write xml elements and attributes...
xmlWriter.WriteEndDocument();
xmlWriter.Flush();在序列化过程中,如果我们跳过对xmlWriter.WriteStartDocument()的调用并在结束时调用xmlWriter.WriteEndDocument(),则不会抛出任何异常。
下面的代码段不会引发任何错误或异常:
XmlWriter xmlWriter = XmlWriter.Create(file);
// write xml elements and attributes...
xmlWriter.WriteEndDocument();
xmlWriter.Flush();这怎麽可能?你能解释一下WriteStartDocument()和WriteEndDocument()的功能吗
发布于 2016-11-28 18:31:14
对于文献资料,此方法将写入出现在根元素之前的WriteStartDocument声明::
在派生类中重写时,写入XML声明。
和文献资料中的WriteEndDocument
在派生类中重写时,关闭所有打开的元素或属性,并将写入器重新置于开始状态。
没有提到,要么是相关的或依赖于另一个,实际上,你的实验似乎证明了这一点。
与其他类似命名的方法对(如WriteStartElement和WriteEndElement )不同,调用其中一个而不调用另一个方法不能使您陷入文档无效的状态。尽管如此,我仍然建议您在编写文档的开始和结束时调用它们,因为这显然是API的目的所在。
顺便说一下,很少需要像这样直接使用XmlReader和XmlWriter。它们是非常低级别的XML。我建议您研究大多数用例的LINQ和XmlSerializer。
https://stackoverflow.com/questions/40842172
复制相似问题