我在使用XmlSerializer时遇到了一个使用XmlTextWriter的人。
那两个有什么区别呢?
对我来说,它们提供相同的功能,即创建XML文件。微软网站说,XmlTextWriter提供了一种快速的、非缓存的、仅以前向方式生成流的方法,但我真的不知道这意味着什么。
发布于 2016-04-27 16:50:07
XmlTextWriter类是一个了解XML的对象。您可以使用它生成任意XML文档。数据来自何处并不重要;您可以从任何您认为合适的源中提取XML元素、属性和内容的数据以及XML文档的实际结构,并且它不需要匹配任何特定对象的结构或数据。
另一方面,XmlSerializer是一个知道类型的对象。它具有分析类型、提取重要信息和写出这些信息所需的特性。它碰巧能够使用XmlTextWriter对象来执行实际的I/O;您可以提供自己的I/O,或者在某种程度上它总是创建一个类似的对象来处理实际的I/O,换句话说,序列化对象本身并不真正了解XML,也不需要知道。它将工作委托给另一个对象。
微软网站说,
XmlTextWriter提供了一种快速的、非缓存的、仅以前向方式生成流的方法,但我真的不知道这意味着什么。
这与生成XML文档的其他方法不同,在这种方法中,整个文档结构作为构造的内容保存在内存中,并且只在构建完整个文档之后才写入文件。这通常被描述为“文档对象模型”,即DOM。
编写器方法的性能往往更高效,因为XML数据是根据需要直接从您已经拥有的其他内存数据结构中动态生成的。由于DOM方法要求整个文件的数据和结构同时在内存中表示,它通常会使用更多的内存,在某些情况下,这可能会降低性能(坦率地说,在现代计算机和典型的XML文档中,这通常是一个完全没有问题的问题)。
https://stackoverflow.com/questions/36895470
复制相似问题