Xpath การค้นหาการจับคู่บางส่วนของฟีด RSS [ซ้ำกัน]

ฉันมีการตั้งค่าหน้าเว็บที่ใช้ XML อย่างง่ายเพื่อดึงฟีด RSS จากนั้นจึงสะท้อนไปยังหน้านั้น ฉันกำลังพยายามตั้งค่าคุณลักษณะการค้นหาที่จะอนุญาตให้ผู้ใช้สามารถพิมพ์ข้อความค้นหาสำหรับฟีด RSS จากนั้นจะแสดงผลลัพธ์บนหน้าเว็บ

ฉันรู้ว่าคุณสามารถใช้ Xpath บรรจุได้

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

อย่างไรก็ตาม ฉันต้องการให้ส่วน "แบบสอบถาม" ของสิ่งนี้ถูกแทนที่ด้วยสิ่งที่พิมพ์ลงในช่องค้นหา

ความช่วยเหลือใด ๆ จะได้รับการชื่นชมอย่างมากหรือลิงก์ไปยังไซต์ที่เกี่ยวข้องพร้อมคำตอบ

ขอบคุณล่วงหน้า


person Daniel Tate    schedule 23.04.2015    source แหล่งที่มา


คำตอบ (1)


หมายเหตุ: ฉันถือว่าภาษาของแอปพลิเคชันที่คุณกำลังมองหาวิธีแก้ปัญหาคือ PHP:

คุณจะต้องใส่คำค้นหาแบบไดนามิกในรูปแบบด้านล่าง:

//item[contains(title,'".$searchKeyword."')]/description

ด้านล่างนี้เป็นตัวอย่าง:

<?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 จะเป็นสิ่งที่พิมพ์ลงในช่องค้นหา ดังนั้นฉันจะใช้ post ในแบบฟอร์มที่มีช่องค้นหาอยู่และเก็บตัวแปรนั้นไว้เป็นตัวแปรที่จะใช้ภายใน $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 ฉันจึงต้องแทนที่ทุกอย่างระหว่างแท็ก ‹root› ของคุณด้วย: $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