2012-05-21 67 views
2
  1. 如何查找節點是否不存在? 我使用關於querypath的2個基本問題

    如果($用品 - >分支() - >兄弟($標記名[ '說明']) - >文本())

有沒有更好的辦法?

  1. 有沒有辦法執行OR查詢?如果標籤A存在獲取其文本(),否則獲取B的文本()?

我使用了以下內容:

$desc1 = ( $item->branch()->siblings($tagNames['desc'])->text() ? 
$item->branch()->siblings($tagNames['desc']) : 
$item->branch()->siblings($tagNames['descAlternative'])) ; 

這看起來不像做事情的最有效的方式。

感謝

回答

4

關於第一個:

當QueryPath中沒有找到匹配的,它的大小爲0。所以,你可以這樣做:

if (count($item) > 0) { 
    // do whatever with $item 
} 

因此,對於第二個例子,你可以做:

if (count($item->branch()->siblings($tagNames['desc']))) { 
    $item->branch()->siblings($tagNames['desc']); 
    $item->branch()->siblings($tagNames['descAlternative'])) ; 
} 

但還有另一種方法:你也可以通過兩個選擇器立刻。

$item->branch()->siblings('desc, descAlternative')->text(); 

這將選擇兩者。但是,text()只會返回第一個匹配項目的文本。所以它有做OR的效果。

+0

我喜歡querypath越來越多! –