如何通過id
搜索DOMElement
,出現在另一個DOMElement
下?如何在給定元素下通過id進行搜索?
$element->ownerDocument->getElementById('my-id');
...將搜索整個文檔。如果它出現在$element
下,我只想要返回該元素。
如何通過id
搜索DOMElement
,出現在另一個DOMElement
下?如何在給定元素下通過id進行搜索?
$element->ownerDocument->getElementById('my-id');
...將搜索整個文檔。如果它出現在$element
下,我只想要返回該元素。
你可以使用XPath來完成。下面將有該元素(典型小於120個字符的一行):
$idElement = ($r = simplexml_import_dom($element)->xpath('.//*[@id="my-id"]'))
? dom_import_simplexml($r[0]) : NULL;
如果它沒有找到,你會得到NULL
。
descendant::*[@id="my-id"]
.//*[@id="my-id"]
上下文節點是一樣的,SimpleXML中的XPath,它會自動對上下文節點,在DOMXPath您需要:這是什麼基本上沒有使用短手形式是什麼@ircmaxell在他的回答表明是指定它。
哦,只要看到,它是你誰編輯在回答XPath的,所以重要的一部分時,必然是對上下文節點,雙斜槓前使用圓點
.
//
的斜槓,否則將去到根再次,點防止這(比較與指定文件系統中的相對文件路徑)。
是XPath的一個選擇? –
@RolandoIsidoro它是! – Benjamin
@Benjamin FYI有[** phpQuery **](http://code.google.com/p/phpquery),不知道該用戶是否知道它... – HamZa