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)。