PostgreSQL原生支持XML类型,需用XMLPARSE插入、xpath()查询、XMLSERIALIZE输出,并通过函数校验良构性;建表用xml类型,插入须XMLPARSE(CONTENT ‘…’),不可直赋字符串。
PostgreSQL 原生支持 XML 数据类型,可以直接存储、解析和查询 XML 内容,无需转成 text 或 JSON。关键在于正确使用 XML 类型、XMLPARSE、XMLSERIALIZE 和 XPath 函数(如 xpath()),避免常见类型转换错误。
定义字段并安全插入 XML 数据
直接声明列类型为 XML,但插入时不能直接写字符串字面量——必须显式解析,否则会报错“cannot cast type text to xml”。
- 建表时用
xml类型:CREATE TABLE documents (id serial, content xml); - 插入前用
XMLPARSE转换字符串:INSERT INTO documents (content) VALUES (XMLPARSE(CONTENT 'PostgreSQL Guide ')); - 若数据来自参数或变量(如应用层传入),也需在 SQL 中包裹
XMLPARSE(CONTENT ?),不能依赖自动转换
用 xpath() 提取 XML 中的值
xpath() 是最常用查询函数,返回 xml[] 数组,配合 array_length() 或下标提取单个结果。