如何使用ElemenTree在Python中读取XML文件?

如何使用ElemenTree在Python中读取XML文件?,python,python-3.x,xml,elementtree,Python,Python 3.x,Xml,Elementtree,我有一个XML文件,如下所示: <?xml version="1.0"?> -<Object> <ID>Object_01</ID> <Location>Manchester</Location> <Date>01-01-2020</Date> <Time>15u59m05s</Time> -<Max_25Hz&g

我有一个XML文件,如下所示:

<?xml version="1.0"?>
-<Object>
    <ID>Object_01</ID>
    <Location>Manchester</Location>
    <Date>01-01-2020</Date>
    <Time>15u59m05s</Time>   
-<Max_25Hz>
    <25Hz>0.916631065043311</25Hz>
    <25Hz>0.797958008447961</25Hz>
</Max_25Hz>
-<Max_75Hz>
    <75Hz>1.96599232706463</75Hz>
    <75Hz>1.48317837078523</75Hz>
</Max_75Hz>
</Object>
预期输出:

Object_01
Manchester
01-01-2020
15u59m05s
0.916631065043311
0.797958008447961
1.96599232706463
1.48317837078523
0.916631065043311
0.797958008447961
1.96599232706463
1.48317837078523
tree = ET.ElementTree(ET.fromstring(X))
root = tree.getroot()

for elem in root:
    print(elem.text)       #! Access them Here
    for subelem in elem:
        print(subelem.text) 
Object_01
Manchester
01-01-2020
15u59m05s

        
0.916631065043311
0.797958008447961

        
1.96599232706463
1.48317837078523
收到的输出:

Object_01
Manchester
01-01-2020
15u59m05s
0.916631065043311
0.797958008447961
1.96599232706463
1.48317837078523
0.916631065043311
0.797958008447961
1.96599232706463
1.48317837078523
tree = ET.ElementTree(ET.fromstring(X))
root = tree.getroot()

for elem in root:
    print(elem.text)       #! Access them Here
    for subelem in elem:
        print(subelem.text) 
Object_01
Manchester
01-01-2020
15u59m05s

        
0.916631065043311
0.797958008447961

        
1.96599232706463
1.48317837078523
我尝试对
.attributes
执行相同的操作,希望收到所有的“列”名称,但随后收到:

{}
{}
{}
{}

您可以直接在for循环上方访问它们

Ex:

Object_01
Manchester
01-01-2020
15u59m05s
0.916631065043311
0.797958008447961
1.96599232706463
1.48317837078523
0.916631065043311
0.797958008447961
1.96599232706463
1.48317837078523
tree = ET.ElementTree(ET.fromstring(X))
root = tree.getroot()

for elem in root:
    print(elem.text)       #! Access them Here
    for subelem in elem:
        print(subelem.text) 
Object_01
Manchester
01-01-2020
15u59m05s

        
0.916631065043311
0.797958008447961

        
1.96599232706463
1.48317837078523
输出:

Object_01
Manchester
01-01-2020
15u59m05s
0.916631065043311
0.797958008447961
1.96599232706463
1.48317837078523
0.916631065043311
0.797958008447961
1.96599232706463
1.48317837078523
tree = ET.ElementTree(ET.fromstring(X))
root = tree.getroot()

for elem in root:
    print(elem.text)       #! Access them Here
    for subelem in elem:
        print(subelem.text) 
Object_01
Manchester
01-01-2020
15u59m05s

        
0.916631065043311
0.797958008447961

        
1.96599232706463
1.48317837078523
你可以试试看。 它几乎是json模块的替代品。这允许将xml文件读入python
dict
。这大大简化了对xml内容的访问

比如:

from xmldict import *

root = r'c:\data\FF\Desktop\My_files\XML-files\Object_01.xml'
with open(root) as file:
   xmlStr = file.read()
   xmldict = xml.parse(xmlStr)

print (xmldict['Object']['Id'])

谢谢,那么打印所有“column”名称如何?使用
.tag
ex:
elem.tag
subelem.tag
太好了!非常感谢。那么
attrib
tag
之间有什么区别呢?