首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ElementTree解析XML

ElementTree解析XML
EN

Stack Overflow用户
提问于 2020-10-27 00:38:32
回答 1查看 39关注 0票数 0

我试图使用Python和ElementTree解析下面的xml,但是我遇到了一些错误。

这是我现在使用的代码:

代码语言:javascript
复制
tree = file.xml

for house in tree.findall('.//HOUSE'):
        HOUSE_ID = house.find('ID').text
        ASSET_ID = house.find('ASSET_ID').text
        IP = house.find('IP').text
        FOLLOW_UP= house.find('FOLLOW_UP').text
        NODE_ID= house.find('NODE_ID').text
        ADDRESS = house.find('ADDRESS')
        if ADDRESS is None:
            ADDRESS = ''
        else:
            ADDRESS = ADDRESS.text
        LAST_VISIT_DATETIME = host.find('LAST_VISIT_DATETIME').text
        DOMOTIC = house.find('DOMOTIC')
        if DOMOTIC is None:
            DOMOTIC = ''
        else:
            DOMOTIC = DOMOTIC.text
        ITEM_ID = house.find('ITEM_ID')
        if ITEM_ID is None:
            ITEM_ID = ''
        else:
            ITEM_ID = ITEM_ID.text


        print(HOUSE_ID + "," + ASSET_ID + "," + IP + "," + FOLLOW_UP + "," + NODE_ID + "," + ADDRESS + "," + LAST_VISIT_DATETIME + "," + ADDRESS + "," + LAST_VISIT_DATETIME)

这是XML:

代码语言:javascript
复制
<OUTPUT>
    <RESPONSE>
        <DATETIME>2020-10-26T11:38:35Z</DATETIME>
        <HOUSE_LIST>
            <HOUSE>
                <ID>10808749</ID>
                <ASSET_ID>1234</ASSET_ID>
                <IP>192.168.0.1</IP>
                <TRACKING_METHOD>IP</TRACKING_METHOD>
                <NODE_ID>0</NODE_ID>
                <ADDRESS>
                    <![CDATA[XXX]]>
                </ADDRESS>
                <LAST_VISIT_DATETIME>2020-08-28T09:16:26Z</LAST_VISIT_DATETIME>
                <LAST_COMM_DATE>2020-08-28T08:48:38Z</LAST_COMM_DATE>
                <LAST_COMM_DURATION>982</LAST_COMM_DURATION>
                <ITEM_LIST>
                    <ITEM>
                        <ITEM_ID>13607</ITEM_ID>
                        <TYPE>Potential</TYPE>
                        <USAGE>3</USAGE>
                        <LOCATION>443</LOCATION>
                        <ABCD>aa</ABCD>>
                        <ABD>1</ABD>
                        <DESCRIPTION>
                            <![CDATA[AAAAAA]]>
                        </DESCRIPTION>
                        <STATUS>New</STATUS>
                        <FIRST_FOUND_DATETIME>2020-08-28T08:48:38Z</FIRST_FOUND_DATETIME>
                        <LAST_FOUND_DATETIME>2020-08-28T08:48:38Z</LAST_FOUND_DATETIME>
                        <TIMES_FOUND>1</TIMES_FOUND>
                        <LAST_TEST_DATETIME>2020-08-28T08:48:38Z</LAST_TEST_DATETIME>
                        <LAST_UPDATE_DATETIME>2020-08-28T09:16:26Z</LAST_UPDATE_DATETIME>
                        <IS_IGNORED>0</IS_IGNORED>
                        <IS_DISABLED>0</IS_DISABLED>
                        <LAST_PROCESSED_DATETIME>2020-08-28T09:16:26Z</LAST_PROCESSED_DATETIME>
                    </ITEM>
                    <ITEM>

我想打印每个房子的物品清单,但它只打印其中的一个。

EN

回答 1

Stack Overflow用户

发布于 2020-10-31 01:00:24

之所以会发生这种情况,是因为ITEM元素在HOUSE/ITEM_LIST中重复,要打印每个单元中的项目列表,需要使用与遍历HOUSE元素相同的方式来遍历ITEM元素:

代码语言:javascript
复制
for item in house.findall('./ITEM_LIST/ITEM'):
    ITEM_ID = item.find('ITEM_ID')
    if ITEM_ID is None:
        ITEM_ID = ''
    else:
        ITEM_ID = ITEM_ID.text
    print(ITEM_ID)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64541327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档