Перейти к содержимому
Последнее обновление

XPATH_STRING

Описание​

Функция XPATH_STRING разбирает строку XML и возвращает первый узел XML, соответствующий выражению XPath.

подсказка

Эта функция поддерживается начиная с версии 3.0.6.

Синтаксис​

XPATH_STRING(<xml_string>, <xpath_expression>)

Параметры​

ПараметрОписание
<xml_string>Исходная строка. Тип: VARCHAR
<xpath_expression>Выражение XPath. Тип: VARCHAR

Возвращаемое значение​

Возвращает значение типа VARCHAR, содержащее содержимое первого узла XML, соответствующего выражению XPath.

Особые случаи:

  • Функция вызывает ошибку, если xml или xpath имеют неверный формат.

Примеры​

  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. Входное значение NULL
SELECT xpath_string(NULL, '/a');
+--------------------------+
| xpath_string(NULL, '/a') |
+--------------------------+
| NULL |
+--------------------------+
  1. Разделы CDATA: содержимое CDATA возвращается как обычный текст
SELECT xpath_string('<a><![CDATA[123]]></a>', '/a');
+----------------------------------------------+
| xpath_string('<a><![CDATA[123]]></a>', '/a') |
+----------------------------------------------+
| 123 |
+----------------------------------------------+
  1. Комментарии XML пропускаются
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. Некорректный XML: функция вызывает ошибку
SELECT xpath_string('<a><!-- comment -->123/a>', '/a');
ERROR 1105 (HY000): errCode = 2, detailMessage = [INVALID_ARGUMENT]Function xpath_string failed to parse XML string: Start-end tags mismatch

Ключевые слова​

XPATH_STRING, XPATH, XML