Convierta una lista desordenada HTML (anidada) de enlaces a PHP matriz de enlaces

Tengo una lista de enlaces desordenada HTML anidada, y me gustaría rasparla con PHP y convertirla en una matriz.

La lista original se ve así:

 

Cualquiera de los artículos puede tener hijos.

(El raspado de la pantalla no es un problema, puedo hacerlo).

Me gustaría convertir esto en una matriz de PHP, de solo los enlaces, manteniendo la naturaleza jerárquica de la lista. ¿Algunas ideas?

He analizado el uso de htmlsimpledom y phpQuery, que usan jQuery como la syntax. Pero, parece que no puedo obtener la syntax correcta. Puedo obtener todos los enlaces, pero termino perdiendo la naturaleza y el orden jerárquico.

Gracias.

Use DOMDocument y SimpleXMLElement en la línea de:

 $doc = new DOMDocument(); $doc->loadHTML($html); $xmlStr = $doc->saveXml($doc->documentElement); $xml = new SimpleXmlElement($xmlStr); $links = array(); foreach ($xml->xpath('//a') as $li) { $links[] = $li->attributes()->href; } 

Si se agrega href a $ enlaces como elemento SimpleXMLElement, use ob_start y ob_clean para capturar la cadena.

Hoja de referencia para consultas xpath (pdf)