<Approach_Locking_Areas Last_SyDB_Version_ID_Memorized="0.0.0" Data_Familly="DF52">
<Approach_Locking_Area Name="ALS_S50103_Up" ID="110">
<Approach_Locking_Block_List>
<Block_ID>424</Block_ID>
<Block_ID>954</Block_ID>
<Block_ID>955</Block_ID>
<Block_ID>956</Block_ID>
<Block_ID>957</Block_ID>
<Block_ID>958</Block_ID>
<Block_ID>959</Block_ID>
</Approach_Locking_Block_List>
<Approach_Locking_Area_Partially_Covered_By_Uevol>false</Approach_Locking_Area_Partially_Covered_By_Uevol>
<Added_By_BMCP_Block_ID_List>
<Block_ID_Not_Defined>0</Block_ID_Not_Defined>
</Added_By_BMCP_Block_ID_List>
<Emergency_Route_Release_Time>56900</Emergency_Route_Release_Time>
</Approach_Locking_Area>
</Approach_Locking_Areas>
etree.ElementTree 读取上述xml文件,<Block_ID>的值全部为空
import xml.etree.ElementTree as ET
def walkData(root_node, level, result_list):
temp_list = [level, root_node.tag, root_node.attrib]
result_list.append(temp_list)
print(result_list)
# 遍历每个子节点
children_node = list(root_node)
if len(children_node) == 0:
return
# print(children_node)
for child in children_node:
walkData(child, level + 1, result_list)
# breakpoint()
# print(child)
# print(result_list)
# breakpoint()
return
# 获得原始数据
def getXmlData(file_name):
level = 1 # 节点的深度从1开始
result_list = []
root = ET.parse(file_name).getroot()
# print(root)
# # print(r2)
# breakpoint()
walkData(root, level, result_list)
return result_list
r2=getXmlData(name2)
运行结果如下:
[[1, 'Approach_Locking_Areas', {'Last_SyDB_Version_ID_Memorized': '0.0.0', 'Data_Familly': 'DF52'}], [2, 'Approach_Locking_Area', {'Name': 'ALS_S50103_Up', 'ID': '110'}], [3, 'Approach_Locking_Block_List', {}], [4, 'Block_ID', {}], [4, 'Block_ID', {}], [4, 'Block_ID', {}], [4, 'Block_ID', {}], [4, 'Block_ID', {}], [4, 'Block_ID', {}], [4, 'Block_ID', {}]]