跳到主要内容

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 标记

示例

  1. 基本节点值提取
SELECT xpath_string('<a>123</a>', '/a');
+-----------------------------------+
| xpath_string('<a>123</a>', '/a') |
+-----------------------------------+
| 123 |
+-----------------------------------+
  1. 嵌套元素提取
SELECT xpath_string('<a><b>123</b></a>', '/a/b');
+--------------------------------------------+
| xpath_string('<a><b>123</b></a>', '/a/b') |
+--------------------------------------------+
| 123 |
+--------------------------------------------+
  1. 使用属性
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 |
+----------------------------------------------------------+
  1. 使用位置谓词
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 |
+----------------------------------------------------+
  1. 处理 CDATA
SELECT xpath_string('<a><![CDATA[123]]></a>', '/a');
+-----------------------------------------------+
| xpath_string('<a><![CDATA[123]]></a>', '/a') |
+-----------------------------------------------+
| 123 |
+-----------------------------------------------+
  1. 处理注释
SELECT xpath_string('<a><!-- comment -->123</a>', '/a');
+---------------------------------------------------+
| xpath_string('<a><!-- comment -->123</a>', '/a') |
+---------------------------------------------------+
| 123 |
+---------------------------------------------------+
  1. 没有匹配节点
SELECT xpath_string('<a>123</a>', '/b');
+----------------------------------+
| xpath_string('<a>123</a>', '/b') |
+----------------------------------+
| |
+----------------------------------+
  1. NULL 值处理
SELECT xpath_string(NULL, '/a');
+--------------------------+
| xpath_string(NULL, '/a') |
+--------------------------+
| NULL |
+--------------------------+
  1. 格式错误
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