php getElementsByTagName с определенным атрибутом - PullRequest
0 голосов
/ 19 ноября 2010

Я думаю, что это получает первый элемент с именем <gallery>

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

Я пытаюсь получить <gallery name="Third">

Я думаю, мне нужно что-то эквивалентное:

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

Спасибо, Энди

Ответы [ 2 ]

5 голосов
/ 19 ноября 2010

Это возможно только с 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
    }
}
1 голос
/ 19 ноября 2010

Как следует из названия, getElementsByTagName () принимает только имена тегов. Попробуйте XPath вместо

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

Не проверял, так что могут быть ошибки, опечатки или что-то.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...