【问题标题】:XML Serialization VS XML ParsingXML 序列化 VS XML 解析
【发布时间】:2012-08-11 12:27:25
【问题描述】:

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

【问题讨论】:

    标签: xml-parsing xml-serialization


    【解决方案1】:

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

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

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

    【讨论】:

    • 那么你说的“解析”和“反序列化”是一样的吗?
    • 我相信有些人用“反序列化”这个词的意思是“解析”,是的。
    【解决方案2】:

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

    解析——从存储读取数据(解析入),写入数据(解析出)到存储……“比如一个文本文件”

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

    这是一个新的……

    marshalling - (marshall 和 unmarshall)类似于序列化,除了 marshalling 用于将数据转换为不同的格式...... “即您要将字节流转换为 32 位结构(一个字节到四个字节)"

    【讨论】:

      【解决方案3】:

      简单来说(适合初学者)

      TL;DR

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

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

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

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

      XML 序列化

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

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

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

      【讨论】:

        猜你喜欢
        • 2010-10-29
        • 2012-06-21
        • 1970-01-01
        • 2011-05-16
        • 1970-01-01
        • 2012-08-12
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        相关资源
        最近更新 更多