Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 用lxml解析xml_Python 3.x_Lxml - Fatal编程技术网

Python 3.x 用lxml解析xml

Python 3.x 用lxml解析xml,python-3.x,lxml,Python 3.x,Lxml,我正在用lxmlpython3解析xml文件。将元素转换为dict of list of dict。但是代码没有正常工作,并且出现了一些奇怪的情况,我尝试了调试,但无法找出问题所在: 下面是我写的片段: tree = lxml.etree.parse(self.meetingXmlFile) root = tree.getroot() roomList = [] for child in root.iter(): # print("Tag is

我正在用lxmlpython3解析xml文件。将元素转换为dict of list of dict。但是代码没有正常工作,并且出现了一些奇怪的情况,我尝试了调试,但无法找出问题所在:

下面是我写的片段:

    tree = lxml.etree.parse(self.meetingXmlFile)
    root = tree.getroot()

    roomList = []
    for child in root.iter():
        # print("Tag is ::%s  and text is ::%s" % (child.tag ,  child.text))
        if child.tag  == "TowerName":
            roomList.clear()
            indexTower = child.text
            # print(indexTower)
        elif child.tag  == "BigMeetingRooms" :
            roomSize = "bigMeetingRoom"
        elif child.tag == "SmallMeetingRooms":
            roomSize = "smallMeetingRoom"
        elif child.tag  == "MeetingRoomName" :
            roomName = child.text
        elif child.tag == "MeetingRoomMailId" :
            roomMailId = child.text
            roomDict={roomName:roomMailId}
            roomList.append(roomDict)
            if roomSize == "bigMeetingRoom" :
                # print(indexTower, "  ", roomName, "  ", roomMailId)
                self.bigMeetingRoom[indexTower] = roomList
                print(indexTower, "  ", self.bigMeetingRoom[indexTower])
                print(self.bigMeetingRoom)

<>而不是使用<代码>迭代()/代码>和测试标记名称,考虑使用<代码> XPATH()/>代码>…< /P> Python 3.6

从lxml导入etree
tree=etree.parse(“input.xml”)
roomList={}
对于tree.xpath中的塔(“/root/Towers/tower”):
大房间=[]
对于tower.xpath中的lr(“会议室/大型会议室/会议室”):
大型会议室。追加({lr.xpath(“MeetingRoomName”)[0]。文本:
lr.xpath(“MeetingRoomMailId”)[0].text})
roomList[tower.xpath(“TowerName”)[0].text]=大型房间
打印(房间列表)
XML输入(“Input.XML”)


6号楼
科尔塞姆
科尔塞姆邮政
蓝宝石
萨菲尔邮件
达佛迪尔斯
Dafodills_邮件
参议院
参议院议院
论坛
论坛邮件
珍珠
珍珠邮递
7号楼
第7卷
科勒塞姆•梅勒7
萨菲尔7
Saphire_mail7
水仙花
Dafodills_mail7
参议院第七院
参议院议院
论坛7
论坛邮箱7
珍珠7
珍珠邮递7
打印输出

{'Tower 6':[{'Colesseum':'Colesseum_mail'},{'Saphire':'Saphire_mail'},{'Dafodills':'Dafodills_mail'},'Tower 7':[{'Colesseum_mail'},{'Saphire7':'Saphire_mail'},{'Dafodills':'Dafodills':'Dafodills_Mails'}