2010-11-19 73 views
0

我覺得這得叫<gallery>PHP的getElementsByTagName具有特定屬性

$gallery = $objDOM->getElementsByTagName('gallery')->item(0); 

我試圖讓<gallery name="Third">

我想我需要的東西相當於第一個元素:

$gallery = $objDOM->getElementsByTagName('gallery[@name="Third"]')->item; 

謝謝,安迪

回答

5

這只是pos例如DOMXPath,例如

$xp = new DOMXPath($yourDOMDocument); 
$nodes = $xp->query('//gallery[@name="Third"]'); 

或通過遍歷節點列表中的呼叫getElementsByTagName

foreach ($objDOM->getElementsByTagName('gallery') as $gallery) { 
    if($gallery->getAttribute('name') === 'Third') { 
     // do something 
    } 
} 
+0

使用* // gallery *與*在文檔上調用* getElementsByTagName()*不同,因爲它僅匹配根級別上的「圖庫」元素,而不是每個「圖庫」元素。 – KingCrunch 2010-11-19 12:36:24

+0

@Sebastian不正確。 ''gallery'匹配文檔中任何位置的任何圖庫元素(或下方的上下文節點)。這*相當於使用'getElementsByTagName()' – Gordon 2010-11-19 12:49:03

+0

是的,對不起,你是對的。 – KingCrunch 2010-11-19 12:59:15

1

,顧名思義的getElementsByTagName()只接受標記名稱。嘗試使用XPath代替

$xpath = new DOMXPath ($objDOM); 
$nodeList = $xpath->query('gallery[@name="Third"]'); 
$gallery = $nodeList->item(0); 

不測試它,所以可能會出現錯誤,拼寫錯誤等等。

+0

當然,不知道爲什麼我不這樣做,首先!乾杯。 – Andy 2010-11-19 11:18:05

相關問題