当我遇到使用XmlSerializer
的某人时,我正在使用XmlTextWriter
。
两者之间有什么区别?
对我来说,它们具有与创建XML文件相同的功能。微软网站表示XmlTextWriter
提供了一种快速,非缓存的,仅转发的方式来生成流,但是我真的不知道这意味着什么。
最佳答案
XmlTextWriter
类是知道XML的对象。您可以使用它来生成任意XML文档。数据来自哪里都没有关系;您可以从您认为合适的任何来源提取XML元素,属性和内容的数据以及XML文档的实际结构,并且不需要匹配任何特定对象的结构或数据。
另一方面,XmlSerializer
是知道类型的对象。它具有分析类型,提取重要信息并将其写出所需的功能。它恰巧能够使用XmlTextWriter
对象执行实际的I / O;您可以提供自己的对象,或者在某种程度上它将始终创建一个类似的对象来处理实际的I / O。换句话说,序列化程序对象本身并不真正了解XML,也不需要。它将工作委托给另一个对象。
微软网站表示XmlTextWriter
提供了一种快速,非缓存的,仅转发的方式来生成流,但是我真的不知道这意味着什么。
“快”:不慢
“非缓存”:重要信息的存储时间不超过绝对必要的时间
“仅转发”:您无法重新访问已创建的XML文档的一部分
这与生成XML文档的其他方法形成了对比,在XML文档中,整个文档结构在构建时都保存在内存中,并且仅在构建完整个文档后才写入文件。通常将其描述为“文档对象模型”或DOM。
writer方法往往会提高性能,因为XML数据是根据需要直接从您已经拥有的其他内存数据结构中即时生成的。因为DOM方法要求立即在内存中表示整个文件的数据和结构,所以它通常会使用更多的内存,这在某些情况下会降低性能(尽管坦率地说,在现代计算机和典型XML文档中,这通常是完全没有问题)。