У меня была та же проблема, и я использовал метод children, чтобы получить только элементы первого уровня.
<ul class="my-list">
<li>
<a href="#">Some Text</a>
<ul>
<li><a href="#">Some Inner Text</a></li>
<li><a href="#">Some Inner Text</a></li>
<li><a href="#">Some Inner Text</a></li>
<li><a href="#">Some Inner Text</a></li>
</ul>
</li>
<li>
<a href="#">Some Text</a>
<ul>
<li><a href="#">Some Inner Text</a></li>
<li><a href="#">Some Inner Text</a></li>
<li><a href="#">Some Inner Text</a></li>
<li><a href="#">Some Inner Text</a></li>
</ul>
</li>
</ul>
А вот код простого HTML Dom для получения элементов li первого уровня:
$html = file_get_html( $url );
$first_level_items = $html->find( '.my-list', 0)->children();
foreach ( $first_level_items as $item ) {
... do stuff ...
}