You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中XMLTABLE处理带命名空间XML数据的异常问题

解决方案:PostgreSQL XMLTABLE 处理带命名空间的XML

1. 处理默认命名空间的结构

假设你的XML数据格式如下:

<Records xmlns="http://example.com/records">
  <Record>
    <Id>1001</Id>
  </Record>
  <Record>
    <Id>1002</Id>
  </Record>
</Records>

查询时需在XMLTABLE前用XMLNAMESPACES声明默认命名空间,再在XPath中指定对应元素:

SELECT x.id
FROM your_table,
     XMLNAMESPACES(DEFAULT 'http://example.com/records'),
     XMLTABLE('/Records/Record'
              PASSING your_table.xml_column
              COLUMNS id TEXT PATH 'Id');

2. 处理带ns前缀的ns:Record结构

如果XML是带前缀的格式:

<ns:Records xmlns:ns="http://example.com/records">
  <ns:Record>
    <ns:Id>2001</ns:Id>
  </ns:Record>
  <ns:Record>
    <ns:Id>2002</ns:Id>
  </ns:Record>
</ns:Records>

需要在XMLNAMESPACES里映射前缀与命名空间URI,XPath中使用前缀定位元素:

SELECT x.id
FROM your_table,
     XMLNAMESPACES('http://example.com/records' AS ns),
     XMLTABLE('/ns:Records/ns:Record'
              PASSING your_table.xml_column
              COLUMNS id TEXT PATH 'ns:Id');

关键注意事项

  • 命名空间的URI必须和XML中声明的完全一致,包括大小写、末尾斜杠等细节,任何差异都会导致匹配失败
  • 若不确定XML中的命名空间URI,可先用xpath('namespace-uri(/*)', xml_column)查询确认

内容的提问来源于stack exchange,提问作者SQL RV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 16:09:56