Skip to Content
Go程序设计语言
book

Go程序设计语言

by 艾伦A. A.多诺万, 布莱恩W. 柯尼汉
August 2021
Beginner to intermediate
450 pages
6h 1m
Chinese
Pearson
Content preview from Go程序设计语言

7.14 示例:基于标记的XML解析

4.5节展示了如何用encoding/json包的Marshal和Unmarshal函数来把JSON文档解析为Go语言的数据结构。encoding/xml包提供了一个相似的API。当需要构造一个完整文档树的结构时这很方便,但对于很多程序这是不必要的。encoding/xml还为解析API提供了一个基于标记的底层XML。在这些API中,解析器读入输入文本,然后输出一个标记流。标记流中主要包含四种类型:StartElement、EndElement、CharData和Comment,这四种类型都是encoding/xml包中的一个具体类型。每次调用(*xml.Decoder).Token都会返回一个标记。

API相关的部分如下所示。

Token的接口没有任何方法,这也是一个可识别联合的典型示例。一个传统的接口(比如io.Reader)的目标是隐藏具体类型的细节,这样可以轻松创建满足接口的新实现,对于每一种实现,使用方的处理方式都是一样的。可识别联合类型的接口正好与之相反,它的实现类型是固定的而不是随意增加的,实现类型是暴露的而不是隐藏的。可识别联合类型很少有方法,操作它的函数经常会使用类型switch,然后对每种类型应用不同的逻辑。

下面的xmlselect程序提取并输出XML文档树中特定元素下的文本。利用上面的API,可以在一遍扫描中就完成这个任务,还不用生成相应的文档树。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

计算机网络中的抽象

计算机网络中的抽象

罗斯.怀特
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
量子计算机编程:从入门到实践

量子计算机编程:从入门到实践

Eric R. Johnston, Nicholas Harrigan, Mercedes Gimeno-Segovia

Publisher Resources

ISBN: 9787111558422