簡體   English   中英

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

[英]How to use ElemenTree for reading XML files in Python?

我有一個如下所示的 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>

我還是不太明白attributestext之間的區別。 使用下面的代碼,我嘗試使用text接收所有值。

import xml.etree.ElementTree as ET

root = r'c:\data\FF\Desktop\My_files\XML-files\Object_01.xml'

tree = ET.parse(root)
root = tree.getroot()

for elem in root:
    for subelem in elem:
        print(subelem.text) 

預期輸出:

Object_01
Manchester
01-01-2020
15u59m05s
0.916631065043311
0.797958008447961
1.96599232706463
1.48317837078523

接收輸出:

0.916631065043311
0.797958008447961
1.96599232706463
1.48317837078523

我試圖對.attributes做同樣的事情,希望能收到所有的“列”名稱,但后來我收到了:

{}
{}
{}
{}

您可以直接在 for 循環上方訪問它們。

前任:

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

您可以嘗試https://github.com/martinblech/xmltodict 它幾乎是 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'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM