Я пытаюсь пройти эти 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)
Возможный вывод, который ожидается, является чем-то вроде этого (действительно не заботятся о порядке сортировки, Пока все элементы node представлены где-то в дереве.
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 -->