更新时间:2026-07-03 GMT+08:00
分享

XML函数

功能描述

XML函数用于处理XML格式的数据。支持原生XML解析和生成函数,可以在SQL中直接读取和生成XML格式的字符串。

函数列表

函数

描述

from_xml(xml_str, schema [, options])

将XML字符串解析为结构体。使用指定的schema解析XML字符串。

schema_of_xml(xml [, options])

推断XML字符串的DDL格式schema。

to_xml(expr [, options])

将结构体转换为XML字符串。

xpath(xml, xpath)

返回XML节点中匹配XPath表达式的值数组。

xpath_boolean(xml, xpath)

如果XPath表达式求值为true或找到匹配节点,则返回true。

xpath_double(xml, xpath)

返回XPath表达式求值的double值。

xpath_float(xml, xpath)

返回XPath表达式求值的float值。

xpath_int(xml, xpath)

返回XPath表达式求值的int值。

xpath_long(xml, xpath)

返回XPath表达式求值的long值。

xpath_number(xml, xpath)

返回XPath表达式求值的数值(同xpath_double)。

xpath_short(xml, xpath)

返回XPath表达式求值的short值。

xpath_string(xml, xpath)

返回XPath表达式匹配的第一个文本节点。

示例

from_xml — 解析XML字符串

SELECT from_xml('<person><id>1</id><name>Alice</name></person>', 'id INT, name STRING'); 
-- {1, Alice}

schema_of_xml — 推断XML的schema

SELECT schema_of_xml('<person><id>1</id><name>Alice</name></person>'); 
-- STRUCT<id:INT, name:STRING>

to_xml — 将结构体转为XML

SELECT to_xml(named_struct('id', 1, 'name', 'Alice')); 
-- <ROW><id>1</id><name>Alice</name></ROW>

xpath — 查询XML节点

SELECT xpath('<a><b>1</b><b>2</b></a>', 'a/b/text()'); 
-- ["1", "2"]

xpath_string — 查询XML文本

SELECT xpath_string('<a><b>hello</b></a>', 'a/b'); 
-- hello

注意事项

  • from_xml 和 to_xml 是互逆操作。
  • options 参数是一个MAP类型,支持XML格式的各种选项。
  • 使用XML函数前,需要确保Spark已加载XML支持模块(spark-xml)。

相关文档