Xpath

https://habr.com/ru/articles/753332/

XPath (XML Path Language) - это язык запросов, используемый для навигации и поиска информации в XML-документах. Он позволяет точно указать путь к элементам, атрибутам и текстовым данным, которые нужно найти в структуре XML файлов и получить данные при необходимости.

Ниже приведем несколько примеров указания путей к элементам, которые вам могут понадобиться

1. Указать путь к товарам

<!--
    shop/offers/offer - путь до товаров -> массив объектов offer
-->
<yml_catalog>
    <shop>
        <offers>
            <offer id="123">
                <name>ПЛАТЬЕ Белое</name>
                <price>2080</price>
                <quantity>8</quantity>
                <vendorCode>А123</vendorCode>
                <picture>https://site.ru/upload/А123.jpg</picture>
            </offer>
            <offer id="456">
                <name>ПЛАТЬЕ Черное</name>
                <price>2080</price>
                <quantity>10</quantity>
                <vendorCode>А456</vendorCode>
                <picture>https://site.ru/upload/А456.jpg</picture>
            </offer>
        </offers>
    </shop>
<yml_catalog>

<!--
    offers/ДетальнаяЗапись - путь до товаров -> массив объектов ДетальнаяЗапись
-->
<shop>
    <offers>
        <ДетальнаяЗапись>
            <ID>123</ID>
            <Наименование>ПЛАТЬЕ Белое</Наименование>
            <Цена>2080</Цена>
            <Доступноеколичество>8</Доступноеколичество>
            <Артикул>А123</Артикул>
            <Изображение>https://site.ru/upload/А123.jpg</Изображение>
        </ДетальнаяЗапись>
        <ДетальнаяЗапись>
            <ID>456</ID>
            <Наименование>ПЛАТЬЕ Черное</Наименование>
            <Цена>2080</Цена>
            <Доступноеколичество>10</Доступноеколичество>
            <Артикул>А456</Артикул>
            <Изображение>https://site.ru/upload/А456.jpg</Изображение>
    <offers>
</shop>

2. Выборка элементов

<!--
    name - выберет занчение элемент с название тэга 'name' -> ПЛАТЬЕ Белое
    param[@name='Артикул'] - выберет атрибут с названием "name" равный занчению "Артикул" -> А123
    variant/@size - выберет занчение атрибута 'size' -> 56
    outlets/outlet/@instock - выберет занчение атрибута 'instock' -> 2
-->
<offer id="123">
    <name>ПЛАТЬЕ Белое</name>
    <param name="Артикул">А123</param>
    <variant size="56"/>
    <outlets>
        <outlet instock="2"/>			
    </outlets>
</offer>

<!--
    *[starts-with(name(.),'Изображение_')] - выбрать все элементы, у которых название тэга начинается на "Изображение_" -> массив значений "Изображение_"
-->
<Товар>
    <Код>123</Код>
    <Наименование>ПЛАТЬЕ Белое</Наименование>
    <Изображение_1>https://site.ru/upload/А123_1.jpg</Изображение_1>
    <Изображение_2>https://site.ru/upload/А123_2.jpg</Изображение_2>
    <Изображение_3>https://site.ru/upload/А123_3.jpg</Изображение_3>
</Товар >

<!--
    characteristic[name='Вес, кг']/value - выберет занчение элемента 'value', в котором есть элемент 'name' равный 'Вес, кг' -> 0,374
-->
<product>
    <sku>123</sku>
    <title>ПЛАТЬЕ Белое</title>
    <characteristic>
        <name>Вес, кг</name>
        <value>0,374</value>
    </characteristic>
    <characteristic>
        <name>Длина изделия, мм</name>
        <value>250</value>
    </characteristic>
</product>

<!--
    picture[1] - выберет только первое значение с тэгом 'picture' -> https://site.ru/upload/А123_1.jpg
-->
<offer id="123">
    <name>ПЛАТЬЕ Белое</name>
    <picture>https://site.ru/upload/А123_1.jpg</picture>
    <picture>https://site.ru/upload/А123_2.jpg</picture>
    <picture>https://site.ru/upload/А123_3.jpg</picture>>
</offer>

Last updated