XML 数据格式
Last updated
Was this helpful?
Last updated
Was this helpful?
下面是与 JSON 例子等价的 XML 版本:
如同 json
包一样,也有 xml.Marshal()
和 xml.Unmarshal()
从 XML 中编码和解码数据;但这个更通用,可以从文件中读取和写入(或者任何实现了 io.Reader
和 io.Writer
接口的类型)
和 JSON 的方式一样,XML 数据可以序列化为结构,或者从结构反序列化为 XML 数据;这些可以在例子 15.8()中看到。
encoding
/xml
包实现了一个简单的 XML 解析器(SAX),用来解析 XML 数据内容。下面的例子说明如何使用解析器:
示例 12.17 :
输出:
包中定义了若干 XML 标签类型:StartElement,Chardata(这是从开始标签到结束标签之间的实际文本),EndElement,Comment,Directive 或 ProcInst。
包中同样定义了一个结构解析器:NewParser()
方法持有一个 io.Reader
(这里具体类型是 strings.NewReader
)并生成一个解析器类型的对象。还有一个 Token()
方法返回输入流里的下一个 XML token。在输入流的结尾处,会返回 (nil
,io.EOF
)
XML 文本被循环处理直到 Token()
返回一个错误,因为已经到达文件尾部,再没有内容可供处理了。通过一个 type-switch 可以根据一些 XML 标签进一步处理。Chardata 中的内容只是一个 []byte
,通过字符串转换让其变得可读性强一些。
上一节:
下一节: