读取xml文件,某个节点有值,但读取为空

<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', {}]]

你只读取了 attrib,没有读取 text


def walkData(root_node, level, result_list):   
    temp_list = [level, root_node.tag, root_node.attrib]
    result_list.append(temp_list) 
    #if root_node.tag == 'Block_ID':
    #    print(list(root_node))
    # 遍历每个子节点
    children_node = list(root_node)    
    if len(children_node) == 0:
        temp_list[2] = root_node.text
        return
    # print(children_node)
    for child in children_node:
        walkData(child, level + 1, result_list)
        
        # breakpoint()
       # print(child)
   # print(result_list)
   # breakpoint()
    return

判断一下是不是深度到最深了

def walkData(root_node, level, result_list): 
    if len(root_node) != 0:
        temp_list = [level, root_node.tag, root_node.attrib]
    else:
        temp_list = [level, root_node.tag, root_node.text]
    
    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