Рекурсивно искать родительские дочерние комбинации и строить дерево в Python и XML

Я пытаюсь просмотреть эти данные XML, полные родительских и дочерних отношений, и мне нужен способ построить дерево. Любая помощь будет по достоинству оценена. Кроме того, в этом случае, лучше ли иметь атрибуты или узлы для родительских -> дочерних отношений?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<nodes>
    <node name="Car" child="Engine"/>
    <node name="Car" child="Wheel"/>
    <node name="Engine" child="Piston"/>
    <node name="Engine" child="Carb"/>
    <node name="Carb" child="Bolt"/>
    <node name="Spare Wheel"/>
    <node name="Bolt" child="Thread"/>
    <node name="Carb" child="Foat"/>
    <node name="Truck" child="Engine"/>
    <node name="Engine" child="Bolt"/>
    <node name="Wheel" child="Hubcap"/>
</nodes>

На Python Script это то, что у меня есть. Мой мозг зажарен, и я не могу получить логику? пожалуйста помоги

import xml.etree.ElementTree as ET
tree = ET.parse('rec.xml')
root = tree.getroot()
def find_node(data,search):
    #str = root.find('.//node[@child="1.2.1"]')
    for node in data.findall('.//node'):
        if node.attrib['name']==search:
            print('Child-->', node)

for nodes in root.findall('node'):
    parent = nodes.attrib.get('name')
    child = nodes.attrib.get('child')
    print (parent,'-->', child)
    find_node(root,child)

Возможный вывод, который ожидается, выглядит примерно так (на самом деле не волнует порядок сортировки, пока все элементы узла представлены где-то в дереве).

Car --> Engine --> Piston
Car --> Engine --> Carb --> Float
Car --> Engine --> Carb --> Bolt --> Thread
Car --> Wheel --> Hubcaps
Truck --> Engine --> Piston
Truck --> Engine --> Carb --> Bolt --> Thread
Truck --> Loading Bin
Spare Wheel -->

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

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