Ich habe eine XML (tatsächlich GraphML) Datei wie folgt:Iterieren durch eine GraphML (XML-Datei) und Extrahieren alle Werte
<?xml version="1.0" ?>
<graphml>
<key attr.name="label" attr.type="string" id="label"/>
<graph edgedefault="directed" id="">
<node id="0">
<type>p</type>
<label>sshd(3,2)</label>
</node>
<node id="1">
<type>e</type>
<label>user(3)</label>
</node>
</graph>
</graphml>
ich durch diese und extrahieren jedes einzelne Element iterieren wollen (drucken) . In einer normalen XML-Datei ist das einigermaßen unkompliziert, aber in diesem Fall kann ich das anscheinend nicht tun. Hier ist der Code, den ich verwende.
tree = ET.parse(FILENAME)
root=tree.getroot()
for child in root:
for x in child:
NodeType = child.find('node').find('type')
LabelType = child.find('node').find('label')
print(NodeType.text, LabelType.text)
Was gibt mir die ersten beiden zweimal wiederholt Werte, mit anderen Worten:
p sshd(3,2)
p sshd(3,2)
statt:
p sshd(3,2)
e user(3)
jemand dabei helfen?
Dies funktioniert Danke !, aber es ruft nicht den 'id' Wert für jeden Knoten ab. Ich hätte die Frage klarer stellen sollen. Ich möchte zurück: 0 p sshd (3,2) 1 e user (3) –
einfach hinzufügen: 'node.get ('id')' – har07