我有一个xml文件,如下所示,我想用ElementTree(ET)读取它,我想要的结果是一个表,(我希望代码是可迭代的,因为xml要大得多,并且包含各种对象,参数,节点和值...(我在网站上搜索了可能的解决方案,但是我的xml结构不同,只包含标签,没有属性,也需要迭代) xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="MeasDataCollection.xsl"?>
<!DOCTYPE mdc SYSTEM "MeasDataCollection.dtd">
<mdc xmlns:HTML="http://www.w3.org/TR/REC-xml">
<md>
<neid>
<neun>Node1</neun>
<nedn>ParentObject</nedn>
<nesw>CXP90</nesw>
</neid>
<mi>
<mts>time</mts>
<gp>900</gp>
<mt>parameter1</mt>
<mt>parameter2</mt>
<mt>parameter3</mt>
<mv>
<moid>object1</moid>
<r>value1</r>
<r>value2</r>
<r>value3</r>
</mv>
<mv>
<moid>object2</moid>
<r>value4</r>
<r>value5</r>
<r>value6</r>
</mv>
</mi>
</md>
</mdc>
和预期的输出:
Node1 ParentObject time parameter1 object1 value1
Node1 ParentObject time parameter2 object1 value2
Node1 ParentObject time parameter3 object1 value3
Node1 ParentObject time parameter1 object2 value4
Node1 ParentObject time parameter2 object2 value5
Node1 ParentObject time parameter3 object2 value6
我到目前为止编写的代码是:(我知道它不完整)
import xml.etree.cElementTree as ET
tree = ET.ElementTree(file='a.xml')
root=tree.getroot()
print(root, root.tag, root.attrib)
for child in tree.iterfind('Object1'):
print(child.tag, child.attrib, child.text)