Поиск частичного соответствия Xpath в RSS-канале

У меня есть настройка веб-страницы, которая использует простой XML для получения RSS-канала, после чего он отображается на странице. Я пытаюсь настроить функцию поиска, которая позволит пользователям вводить запрос для RSS-канала, а затем показывать результаты на странице.

Я знаю, что вы можете использовать Xpath, содержащий

/item[contains(title, 'query')]/description 

однако я хочу, чтобы раздел «запрос» был заменен тем, что вводится в поле поиска.

Будем признательны за любую помощь или ссылку на соответствующий сайт с ответом.

заранее спасибо


person Daniel Tate    schedule 23.04.2015    source источник


Ответы (1)


ПРИМЕЧАНИЕ. Я считаю, что языком приложения, в котором вы ищете решение, является PHP:

Вам нужно будет динамически ввести ключевое слово для поиска следующим образом:

//элемент[содержит(название,'".$searchKeyword."')]/описание

Ниже приведен пример:

<?php
$xml = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <area>
        <photographer_id>1</photographer_id>
        <photographer>John</photographer>
        <image>a</image>
    </area>
    <area>
        <photographer_id>1</photographer_id>
        <photographer>John</photographer>
        <image>b</image>
    </area>
    <area>
        <photographer_id>1</photographer_id>
        <photographer>John</photographer>
        <image>c</image>
    </area>
    <area>
        <photographer_id>2</photographer_id>
        <photographer>Fred</photographer>
        <image>a</image>
    </area>
</root>
XML;

$sxe = new SimpleXMLElement($xml);
$searchKeyword = "Fred";
$area = $sxe->xpath("//area[contains(photographer,'".$searchKeyword."')]");

print_r($area);
person Rakesh Lamp Stack    schedule 23.04.2015
comment
Спасибо, это многое проясняет для меня. Переменная $searchKeyword будет соответствовать тому, что вводится в поле поиска, поэтому буду ли я использовать запись в форме, в которой находится окно поиска, и сохранять ее как переменную для использования в $area? - person Daniel Tate; 24.04.2015
comment
да вы правильно поняли. Ключевое слово поиска будет содержать опубликованное значение из окна поиска. - person Rakesh Lamp Stack; 24.04.2015
comment
Даниил, если вы найдете этот ответ полезным. Проголосуйте. Это будет моральный удар. Спасибо! - person Rakesh Lamp Stack; 24.04.2015
comment
Кроме того, поскольку XML, который будет использоваться, будет извлекаться из URL-адреса, мне нужно будет заменить все между вашими корневыми тегами на: $rss = simplexml_load_file('url.asp'); - person Daniel Tate; 25.04.2015
comment
Да, вам придется... XML, который я упомянул, например. если он исходит с любого URL-адреса, вам придется использовать то, что вы написали, т.е. $rss = simplexml_load_file('url.asp'); , если это будет строка, то $rss = simplexml_load_string($xmlstring); - person Rakesh Lamp Stack; 28.04.2015