利用python进行xml解析的问题

如图,如何基于Python,指定特定的序号index,得到对应的4个坐标值,返回用字典即可

img


from bs4 import BeautifulSoup
import json


# 测试
xml_file = """
<segementation_result>
    <frame index="1" rejected="false">
        <point name="bl" x="123" y="467"/>
        <point name="tl" x="234" y="768"/>
        <point name="tr" x="234" y="77"/>
        <point name="br" x="724" y="775"/>
    </frame>
    <frame index="2" rejected="false">
        <point name="bl" x="13" y="987"/>
        <point name="tl" x="33" y="578"/>
        <point name="tr" x="345" y="653"/>
        <point name="br" x="675" y="564"/>
    </frame>
</segementation_result>
"""
# 定义函数 frame_index_value 的index值, xml_file 


def get_frame_point(frame_index_value: int, xml_file: str) -> dict:
    # 解析xml
    soup = BeautifulSoup(xml_file, "xml")
    # 定义字典
    frame_points = {}

    for items in soup.find_all('frame'):
        # frame 对应的index当key
        frame_points[items.get("index")] = []
        for item in items.find_all('point'):
            # 定义point字典
            point = {}
            # point 对应的name当key, 值为列表, 存储, (x,y)
            point[item.get("name")] = (item.get("x"), item.get("y"))
            # 写入点值
            frame_points[items.get("index")].append(point)
    # 返回 frame_index_value 对应的点
    return frame_points.get(str(frame_index_value))


if __name__ == "__main__":
    print(get_frame_point(1, xml_file))

[{'bl': ('123', '467')}, {'tl': ('234', '768')}, {'tr': ('234', '77')}, {'br': ('724', '775')}]

可以参考一下https://www.runoob.com/python/python-xml.html