XPATH_STRING
描述
XPATH_STRING 函数用于解析 XML 字符串,并返回第一个匹配 XPath 表达式的 XML 节点的文本内容。使用标准的 XPath 1.0 语法。
自 Apache Doris 3.0.6 版本开始支持。
语法
XPATH_STRING(<xml_string>, <xpath_expression>)
参数
| 参数 | 说明 |
|---|---|
<xml_string> | 需要解析的 XML 字符串。类型:VARCHAR |
<xpath_expression> | XPath 表达式路径。类型:VARCHAR |
返回值
返回 VARCHAR 类型,为匹配 XPath 表达式的第一个节点的文本内容。
特殊情况:
- 如果 XML 格式不正确,函数会报错
- 如果 XPath 表达式不正确,函数会报错
- 如果没有匹配的节点,返回空字符串
- 如果任意参数为 NULL,返回 NULL
- 自动忽略 XML 注释和 CDATA 标记
示例
- 基本节点值提取
SELECT xpath_string('<a>123</a>', '/a');
+-----------------------------------+
| xpath_string('<a>123</a>', '/a') |
+-----------------------------------+
| 123 |
+-----------------------------------+
- 嵌套元素提取
SELECT xpath_string('<a><b>123</b></a>', '/a/b');
+--------------------------------------------+
| xpath_string('<a><b>123</b></a>', '/a/b') |
+--------------------------------------------+
| 123 |
+--------------------------------------------+
- 使用属性
SELECT xpath_string('<a><b id="1">123</b></a>', '//b[@id="1"]');
+----------------------------------------------------------+
| xpath_string('<a><b id="1">123</b></a>', '//b[@id="1"]') |
+----------------------------------------------------------+
| 123 |
+----------------------------------------------------------+
- 使用位置谓词
SELECT xpath_string('<a><b>1</b><b>2</b></a>', '/a/b[2]');
+----------------------------------------------------+
| xpath_string('<a><b>1</b><b>2</b></a>', '/a/b[2]') |
+----------------------------------------------------+
| 2 |
+----------------------------------------------------+
- 处理 CDATA
SELECT xpath_string('<a><![CDATA[123]]></a>', '/a');
+-----------------------------------------------+
| xpath_string('<a><![CDATA[123]]></a>', '/a') |
+-----------------------------------------------+
| 123 |
+-----------------------------------------------+
- 处理注释
SELECT xpath_string('<a><!-- comment -->123</a>', '/a');
+---------------------------------------------------+
| xpath_string('<a><!-- comment -->123</a>', '/a') |
+---------------------------------------------------+
| 123 |
+---------------------------------------------------+
- 没有匹配节点
SELECT xpath_string('<a>123</a>', '/b');
+----------------------------------+
| xpath_string('<a>123</a>', '/b') |
+----------------------------------+
| |
+----------------------------------+
- NULL 值处理
SELECT xpath_string(NULL, '/a');
+--------------------------+
| xpath_string(NULL, '/a') |
+--------------------------+
| NULL |
+--------------------------+
- 格式错误
SELECT xpath_string('<a><!-- comment -->123/a>', '/a');
ERROR 1105 (HY000): errCode = 2, detailMessage = (10.16.10.3)[INVALID_ARGUMENT]Function xpath_string failed to parse XML string: Start-end tags mismatch
Keywords
XPATH_STRING,XPATH,XML