PHP DOM: Как элегантно получить дочерние элементы по имени тега?

Я анализирую некоторые XML с расширением PHP DOM, чтобы сохранить данные в другой форме. Совершенно неудивительно, что когда я анализирую элемент, мне довольно часто требуется получить все дочерние элементы какого-либо имени. Есть методDOMElement::getElementsByTagName($name), но он возвращает всех потомков с таким именем, а не только непосредственных детей. Есть также собственностьDOMNode::$childNodes но (1) он содержит список узлов, а не список элементов, и даже если бы мне удалось превратить элементы списка в элементы (2), мне все равно нужно было бы проверить все их имена. Неужели нет действительно элегантного решения, чтобы получить только детей с каким-то конкретным именем или я что-то упустил в документации?

Некоторая иллюстрация:

<?php

DOMDocument();
$document->loadXML(<<<EndOfXML
<a>
  <b>1</b>
  <b>2</b>
  <c>
    <b>3</b>
    <b>4</b>
  </c>
</a>
EndOfXML
);

$bs = $document
    ->getElementsByTagName('a')
    ->item(0)
    ->getElementsByTagName('b');

foreach($bs as $b){
    echo $b->nodeValue . "\n";
}

// Returns:
//   1
//   2
//   3
//   4
// I'd like to obtain only:
//   1
//   2

?>

Ответы на вопрос(3)

Ваш ответ на вопрос