XPath — мощный язык для навигации и выбора элементов в документах XML и HTML. Когда дело доходит до выбора нескольких строк в одном теге, существует несколько методов, которые можно использовать для создания выражений XPath. В этой статье мы рассмотрим различные подходы с примерами кода, которые помогут вам решить эту задачу.
Метод 1: Использование функции contains():
Функция contains()XPath позволяет сопоставить элемент на основе частичного содержимого его текста. Вы можете использовать эту функцию для выбора нескольких строк в одном теге. Вот пример:
//tag[contains(., 'Line 1')][contains(., 'Line 2')]
В приведенном выше выражении tagпредставляет имя тега, который вы хотите выбрать. Функция contains()используется дважды, каждый раз с другой строкой текста. Этот XPath выберет тег, который содержит в тексте как «Строку 1», так и «Строку 2».
Метод 2. Использование функции normalize-space().
Функция normalize-space()удаляет начальные и конечные пробельные символы и сворачивает несколько последовательных пробельных символов в строке. Вы можете использовать эту функцию для выбора нескольких строк в одном теге. Вот пример:
//tag[normalize-space(.) = 'Line 1 Line 2']
В приведенном выше выражении tagпредставляет имя тега, который вы хотите выбрать. Функция normalize-space()применяется к содержимому тега, и результат сравнивается с объединенными строками «Строка 1, строка 2». Этот XPath выберет тег, содержащий именно эти строки в этом порядке.
Метод 3. Использование функции string().
Функция string()преобразует выбранный узел и его потомков в строку. Вы можете использовать эту функцию для объединения нескольких строк в одном теге и последующего сопоставления полученной строки. Вот пример:
//tag[contains(string(.), 'Line 1 Line 2')]
В приведенном выше выражении tagпредставляет имя тега, который вы хотите выбрать. К содержимому тега применяется функция string()и в результате проверяется наличие объединенных строк «Строка 1 Строка 2». Этот XPath выберет тег, содержащий обе строки в тексте.
Метод 4. Использование оси following-sibling.
Если строки, которые вы хотите выбрать, представлены одноуровневыми элементами в одном родительском теге, вы можете использовать following-siblingось для перехода к нужным строкам. Вот пример:
//tag/line1/following-sibling::line2
В приведенном выше выражении tagпредставляет имя родительского тега, line1представляет первую строку, а line2представляет вторую строку.. Этот XPath выберет вторую строку (line2), следующую за первой строкой (line1) внутри родительского тега.
XPath предоставляет несколько методов для добавления выражений для выбора нескольких строк в одном теге. Используя такие методы, как функция contains(), функция normalize-space(), функция string()или ось following-sibling, вы можете адаптируйте выражения XPath в соответствии с вашими конкретными требованиями. Поэкспериментируйте с этими методами, чтобы эффективно извлечь нужные данные из документов XML или HTML.
Не забудьте настроить имена тегов и строк в примерах так, чтобы они соответствовали структуре вашего конкретного XML- или HTML-документа.