gpt4 book ai didi

c# - 在不调用 XmlWriter.WriteStartDocument() 的情况下使用 XmlWriter.WriteEndDocument() 是否可行

转载 作者:太空宇宙 更新时间:2023-11-03 23:07:05 28 4
gpt4 key购买 nike

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

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

XmlWriter xmlWriter = XmlWriter.Create(file);

xmlWriter.WriteStartDocument();

// write xml elements and attributes...

xmlWriter.WriteEndDocument();

xmlWriter.Flush();

序列化时,XmlWriter如果我们跳过对 xmlWriter.WriteStartDocument() 的调用,则不会抛出任何异常然后调用xmlWriter.WriteEndDocument()在最后。

下面的代码片段不会抛出任何错误或异常:

XmlWriter xmlWriter = XmlWriter.Create(file);

// write xml elements and attributes...

xmlWriter.WriteEndDocument();

xmlWriter.Flush();

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

最佳答案

根据 the documentation对于 WriteStartDocument,此方法写入出现在根元素之前的 XML 声明::

When overridden in a derived class, writes the XML declaration.

根据the documentation对于 WriteEndDocument:

When overridden in a derived class, closes any open elements or attributes and puts the writer back in the Start state.

没有提到任何一个与另一个相关或依赖于另一个,事实上你的实验似乎证明了这一点。

WriteStartElementWriteEndElement 等其他类似命名的方法对不同,调用其中一个方法而不调用另一个方法不会使您进入文档无效的状态。也就是说,我仍然建议您在编写文档的开始和结束时调用它们,因为这显然是 API 想要您做的。

顺便说一句,很少需要像这样直接使用XmlReaderXmlWriter。它们是非常低级的 XML API。对于大多数用例,我建议您探索 LINQ to XML 和 XmlSerializer

关于c# - 在不调用 XmlWriter.WriteStartDocument() 的情况下使用 XmlWriter.WriteEndDocument() 是否可行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40842172/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com