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