uchen Sie rekursiv nach übergeordneten untergeordneten Kombinationen und erstellen Sie einen Baum in Python und XM

Ich versuche, diese XML-Daten voll von Eltern-> Kind-Beziehungen zu durchlaufen und brauche eine Möglichkeit, einen Baum zu erstellen. Jede Hilfe wird sehr geschätzt. Ist es in diesem Fall auch besser, Attribute oder Knoten für die Beziehung Eltern -> Kind zu haben?

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

Auf dem Python-Skript, das ist, was ich habe. Mein Gehirn ist gebraten und ich kann die Logik nicht in Gang bringen? bitte hilf

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)

Eine mögliche Ausgabe, die erwartet wird, ist ungefähr so (die Sortierreihenfolge spielt keine Rolle, solange alle Knotenelemente irgendwo in der Baumstruktur dargestellt werden.

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

Antworten auf die Frage(8)

Ihre Antwort auf die Frage