2012-03-21 122 views
0

我正在嘗試使用XPATH與表單中的值搜索XML文檔,但遇到了一些錯誤。xpath使用php搜索

警告:的SimpleXMLElement ::的xpath()[simplexmlelement.xpath]:行無效 表達17

警告:的SimpleXMLElement ::的xpath() [simplexmlelement.xpath]:xmlXPathEval:評估失敗上線17

警告:()第21行

holidays.xml片斷

提供的foreach無效的參數
<channel> 
    <item> 
      <title>Holiday description</title> 
      <link>link</link> 
      <description>Holiday description</description> 
      <pubDate>Sun, 13 Feb 2011 11:58:17 GMT</pubDate> 
      <guid>http://site</guid> 
     </item> 
</channel 

txtSearch是從窗體中獲取的文本值。任何人都可以解決這些錯誤?

回答

2

改變這一行

$qry = "channel/item/[contains(text()),'$txtSearch']"; 

這個

$qry = sprintf('channel/item[contains(., "%s")]', $txtSearch); 

,然後它應該工作。

請注意,當您使用'channel'時,查詢相對於您稱爲xpath方法的SimpleXMLElement。當你想從根節點開始時使用'/channel'。當你想在文檔中的任何地方搜索時使用'//channel'

也看看這個XPath tutorial

2

您在此行錯誤$qry = "channel/item/[contains(text()),'$txtSearch']"; 錯誤的支架關閉。同時,你應該在你想要搜索的內容節點指定爲description節點可以使用以下XPath: $qry = "//channel/item[description[contains(text(),\"$txtSearch\")]]";

更新: 肯定的是,戈登的變化是更好:$qry = "//channel/item[contains(.,\"$txtSearch\")]";