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

BigQuery Standard SQL中能否解析XML标签?是否内置XML解析器?

在BigQuery Standard SQL中解析XML标签的可行方案

嗨,好问题!你说得太对了——用正则表达式解析XML绝对是个大坑,嵌套标签、特殊字符、格式变体分分钟就能让正则失效,专门的XML解析器才是靠谱的选择。

好在BigQuery Standard SQL确实内置了原生的XML解析能力,完全能满足你的需求,下面给你详细拆解怎么用:

核心解析函数

BigQuery提供了几个专门处理XML的实用函数,最常用的是这两个:

  • XML_EXTRACT(xml_string, xpath_expression):从XML字符串中提取匹配XPath表达式的第一个节点内容
  • XML_EXTRACT_ALL(xml_string, xpath_expression):提取所有匹配XPath表达式的节点,返回一个数组

实际使用例子

1. 提取单个标签内容

假设你有这样的XML数据:

<book>
  <title>BigQuery Cookbook</title>
  <author>Jane Doe</author>
</book>

要提取书名,可以这么写SQL:

SELECT XML_EXTRACT('<book><title>BigQuery Cookbook</title><author>Jane Doe</author></book>', '//title/text()') AS book_title;

返回结果就是"BigQuery Cookbook"

2. 提取多个同类型标签

如果XML里有多个相同标签,比如:

<library>
  <book>BigQuery Cookbook</book>
  <book>SQL Fundamentals</book>
  <book>Data Warehousing 101</book>
</library>

用XML_EXTRACT_ALL提取所有书名:

SELECT XML_EXTRACT_ALL('<library><book>BigQuery Cookbook</book><book>SQL Fundamentals</book><book>Data Warehousing 101</book></library>', '//book/text()') AS all_books;

返回的是一个数组:["BigQuery Cookbook", "SQL Fundamentals", "Data Warehousing 101"]

3. 提取标签属性

如果标签带有属性,比如:

<book id="123" category="tech">
  <title>BigQuery Cookbook</title>
</book>

要提取id属性的值,用XPath的@语法:

SELECT XML_EXTRACT('<book id="123" category="tech"><title>BigQuery Cookbook</title></book>', '//book/@id') AS book_id;

结果是"123"

为什么比正则靠谱

这些原生函数是基于标准XPath语法实现的,能正确处理XML的嵌套结构、转义字符(比如&lt;、&amp;),以及各种合法的XML格式变体,完全不用担心正则那种“匹配一半就出错”的问题。

内容的提问来源于stack exchange,提问作者Jonny Brooks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:53:44