首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不调用XmlWriter.WriteEndDocument()而使用XmlWriter.WriteStartDocument()是否可行?

不调用XmlWriter.WriteEndDocument()而使用XmlWriter.WriteStartDocument()是否可行?
EN

Stack Overflow用户
提问于 2016-11-28 10:35:59
回答 1查看 589关注 0票数 1

我想知道XmlWriter.WriteStartDocument()XmlWriter.WriteEndDocument()背后的原因。

在我的场景中,我创建了一个XML文档,其中包含一些数据,例如:

代码语言:javascript
复制
XmlWriter xmlWriter = XmlWriter.Create(file);

xmlWriter.WriteStartDocument();

// write xml elements and attributes...

xmlWriter.WriteEndDocument();

xmlWriter.Flush();

在序列化过程中,如果我们跳过对xmlWriter.WriteStartDocument()的调用并在结束时调用xmlWriter.WriteEndDocument(),则不会抛出任何异常。

下面的代码段不会引发任何错误或异常:

代码语言:javascript
复制
XmlWriter xmlWriter = XmlWriter.Create(file);

// write xml elements and attributes...

xmlWriter.WriteEndDocument();

xmlWriter.Flush();

这怎麽可能?你能解释一下WriteStartDocument()WriteEndDocument()的功能吗

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-28 18:31:14

对于文献资料,此方法将写入出现在根元素之前的WriteStartDocument声明::

在派生类中重写时,写入XML声明。

文献资料中的WriteEndDocument

在派生类中重写时,关闭所有打开的元素或属性,并将写入器重新置于开始状态。

没有提到,要么是相关的或依赖于另一个,实际上,你的实验似乎证明了这一点。

与其他类似命名的方法对(如WriteStartElementWriteEndElement )不同,调用其中一个而不调用另一个方法不能使您陷入文档无效的状态。尽管如此,我仍然建议您在编写文档的开始和结束时调用它们,因为这显然是API的目的所在。

顺便说一下,很少需要像这样直接使用XmlReaderXmlWriter。它们是非常低级别的XML。我建议您研究大多数用例的LINQ和XmlSerializer

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40842172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档