10

XML序列化和XML解析有什么区别?我们什么时候应该使用每一个?

4

3 回答 3

16

一般来说,解析是将输入流处理成有意义的数据结构;在 XML 上下文中,解析是将符合 XML 规范的语法和其他约束的字符序列读取为程序使用的任何 XML 内部表示的过程。

序列化是相反的过程:处理程序的内部数据结构(在此上下文中,您的 XML 文档的内部表示)并创建符合尖括号语法的字符序列(通常写入输出流)规格。

使用解析器将 XML 从字符流中读取到数据结构中;使用序列化程序将数据结构写入字符流。

于 2012-08-17T15:38:10.180 回答
5

我对 XML 了解不多,但这里是我对序列化和解析的了解。

解析 - 从存储读取数据(解析入),并将数据(解析出)写入存储…… “例如文本文件”

序列化-(序列化)将数据转换为可读格式,并(反序列化)将该格式转换回数据...... “即您希望将结构转换为可读内容,通过网络流式传输该内容,并将其转换回代码。”

这是一个新的……</p>

编组 - (编组和解组)类似于序列化,除了编组用于将数据转换为不同的格式...... “即你想将字节流转换为 32 位结构(一个字节到四个字节)”

于 2015-07-25T00:04:43.667 回答
0

简单来说(对于初学者)

TL;博士

XML 解析(或 XML 反序列化)==>输入:有效 XML,输出:数据结构

XML 序列化 ==>输入:数据结构,输出:有效 XML

XML 解析(又名 XML 反序列化)

您将.xml 文件(example.xml) 作为输入,以使用您选择的编程语言对其进行处理,以便您的程序可以对该文件中的数据执行一些有用的操作。您的程序会将文件中的信息转换为您的编程语言可以处理的数据结构(即列表、数组、对象等)。

XML 序列化

您的程序(使用任何编程语言)将表示为数据结构(列表、数组、对象等)的信息转换为有效的 XML输出,该输出可以保存到文件中或传输到另一个程序。

注意:从技术上讲,输入(当我们讨论解析时)和输出(当我们讨论序列化时)不一定是文件。正如上面更专业的答案所述,它也可以是任何输入/输出流。并且文件不必具有 .xml 扩展名,它们可以具有代表有效 XML 格式的任何文件扩展名(即 .svg 也是基于 XML 的格式)。理解的关键是,当我们进行XML 解析时,输入端有有效的 XML,输出端有数据结构,而当我们进行XML 序列化时,输入端有数据结构,输出端有有效XML

举一个 Python 世界的例子:您可以使用内置包(如xml.etree.ElementTree)或第三方库(如lxml(推荐)或xmltodict)来做这两者 - 解析(反序列化)或创建(序列化)XML数据.

于 2021-11-29T13:52:55.790 回答