PostgreSQL怎么存储和查询XML PostgreSQL xpath()函数用法-XML/RSS教程

PostgreSQL支持XML数据类型及xpath()、XMLTABLE等函数实现XML存储与XPath查询。需创建xml列、用XMLPARSE插入、通过xpath()提取节点、XMLTABLE关系化展开、GIN索引优化,并正确处理命名空间。

如果您需要在 PostgreSQL 中处理 XML 数据,系统提供了专门的 XML 数据类型和内置函数来支持存储、解析与查询。以下是实现 XML 存储与 XPath 查询的具体操作步骤:

一、创建含 XML 类型的表并插入数据

PostgreSQL 提供了 xml 数据类型,用于安全地存储格式良好的 XML 内容;插入前会自动验证其良构性(well-formedness),避免非法 XML 进入数据库。

1、执行 CREATE TABLE 语句,定义一个包含 xml 类型列的表:

CREATE TABLE documents (id SERIAL PRIMARY KEY, content XML);

2、使用 XMLPARSE 函数插入合法 XML 字符串:

INSERT INTO documents (content) VALUES (XMLPARSE(CONTENT ‘PostgreSQL Guide
Lee Chen’));

3、也可直接插入字符串字面量(系统隐式调用 XMLPARSE):

INSERT INTO documents (content) VALUES (‘Advanced SQL
Jane Doe’);

二、使用 xpath() 函数提取 XML 节点内容

xpath() 函数接受 XPath 表达式和 XML 值作为输入,返回 text[] 数组,每个元素对应一个匹配节点的文本内容;若无匹配,则返回空数组。

1、查询所有文档中 元素的文本值:

SELECT xpath(‘/book/title/text()’, content) FROM documents;

2、将结果展开为多行(配合 UNNEST):

SELECT UNNEST(xpath(‘/book/title/text()’, content))::TEXT AS title FROM documents;

3、提取多个路径并组合输出:

SELECT (xpath(‘/book/title/text()’, content))[1]::TEXT AS title, (xpath(‘/book/author/text()’, content))[1]::TEXT AS author FROM documents;

三、使用 XMLTABLE 进行关系化展开

XMLTABLE 将 XML 数据按指定 XPath 映射为关系表结构,适合复杂嵌套或需多列对齐的场景;它比反复调用 xpath() 更高效且语义清晰。

1、定义命名空间(如 XML 含 xmlns 属性)并在 XMLTABLE 中声明:

SELECT * FROM XMLTABLE(XMLNAMESPACES(‘http://example.com’ AS ns), ‘/ns:root/ns:item’ PASSING ‘1A’::XML COLUMNS id INT PATH ‘ns:id’, name TEXT PATH ‘ns:name’);

2、从表字段中读取 XML 并展开:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » PostgreSQL怎么存储和查询XML PostgreSQL xpath()函数用法-XML/RSS教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3995063+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3995063+
  • 本周更新: 0+
  • 最后更新: 2026-03-16