Получить определенный дочерний тег из DOMElement в PHP

Я прохожу через файл определения xml, и у меня есть DOMNodeList, который я просматриваю. Мне нужно извлечь содержимое дочернего тега, который может быть или не быть в текущем объекте

<input id="name"> <label>Full Name:</label> <required /> </input> <input id="phone"> <required /> </input> <input id="email" /> 

Мне нужно заменить ????????????? с чем-то, что доставит мне содержимое тега метки, если оно существует.

Код:

 foreach($dom->getElementsByTagName('required') as $required){ $curr = $required->parentNode; $label[$curr->getAttribute('id')] = ????????????? } 

Ожидаемый результат:

 Array( ['name'] => "Full Name:" ['phone'] => ) 

Solutions Collecting From Web of "Получить определенный дочерний тег из DOMElement в PHP"

Странная вещь: вы уже знаете ответ, так как вы использовали его в своем скрипте, getElementsByTagName () .
Но на этот раз не с DOMDocument в качестве контекстного «узла», а с input DOMElement:

 <?php $doc = getDoc(); foreach( $doc->getElementsByTagName('required') as $e ) { $e = $e->parentNode; // this should be the <input> element // all <label> elements that are direct children of this <input> element foreach( $e->getElementsByTagName('label') as $l ) { echo 'label="', $l->nodeValue, "\"\n"; } } function getDoc() { $doc = new DOMDocument; $doc->loadxml('<foo> <input id="name"> <label>Full Name:</label> <required /> </input> <input id="phone"> <required /> </input> <input id="email" /> </foo>'); return $doc; } 

prints label="Full Name:"