Skip to content

xpath(xml, path)

Описание

Функция xpath() извлекает значения из XML-документа по указанному XPath-выражению и возвращает их в виде массива строк.

Параметры

  • xml: Column - столбец с XML-строками
  • path: String - XPath-выражение для извлечения значений

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

Array[String] - массив строк с извлеченными значениями

Пример использования

from pyspark.sql.functions import xpath
from pyspark.sql import SparkSession

# Создаем SparkSession
spark = SparkSession.builder.appName("xpath_example").getOrCreate()

# Создаем DataFrame с XML-строками
data = [
    ("<products><product><name>Laptop</name></product><product><name>Phone</name></product></products>"),
    ("<products><product><name>Tablet</name></product></products>")
]
df = spark.createDataFrame(data, ["xml"])

# Извлекаем названия всех продуктов
result = df.select(
    "xml",
    xpath("xml", "products/product/name").alias("product_names")
).show(truncate=False)

# Результат:
# +------------------------------------------------------------------+------------------+
# |xml                                                               |product_names     |
# +------------------------------------------------------------------+------------------+
# |<products><product><name>Laptop</name></product><product><name>Phone</name></product></products>|[Laptop, Phone]   |
# |<products><product><name>Tablet</name></product></products>       |[Tablet]          |
# +------------------------------------------------------------------+------------------+

Примечания

  • XPath-выражение должно быть корректным
  • Если элементы не найдены, возвращается пустой массив
  • NULL значения в XML возвращают NULL
  • Функция возвращает все найденные значения в виде массива строк
  • Для работы с XML также используйте:
  • xpath_boolean() для проверки условий
  • xpath_double() для извлечения чисел
  • xpath_int() для извлечения целых чисел
  • xpath_long() для извлечения длинных целых чисел
  • xpath_short() для извлечения коротких целых чисел
  • xpath_string() для извлечения строк
  • xml_tuple() для извлечения нескольких значений