PHP DOM: Jak uzyskać eleganckie elementy potomne według nazwy tagu?

Parsuję trochę XML z rozszerzeniem PHP DOM w celu przechowywania danych w innej formie. Nic dziwnego, że gdy analizuję element, często muszę uzyskać wszystkie elementy potomne jakiejś nazwy. Jest metodaDOMElement::getElementsByTagName($name), ale zwraca wszystkich potomków o tym imieniu, nie tylko bezpośrednich dzieci. Istnieje również nieruchomośćDOMNode::$childNodes ale (1) zawiera listę węzłów, a nie listę elementów, a nawet jeśli udało mi się zamienić elementy listy w elementy (2), nadal musiałbym sprawdzić wszystkie z nich pod kątem nazwy. Czy naprawdę nie ma eleganckiego rozwiązania, aby uzyskać tylko dzieci o określonej nazwie lub czy czegoś brakuje w dokumentacji?

Pewna ilustracja:

<?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

?>

questionAnswers(3)

yourAnswerToTheQuestion