Рекурсивно искать родительские дочерние комбинации и строить дерево в 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 -->