使用ElementTree在Python中解析XML - findall

时间:2015-03-09 02:48:24

标签: python xml elementtree

我使用文档here尝试仅获取某些元素的值。

这是我的XML结构的一个例子:

<ListOrdersRequest>
    <ListOrdersResult>
        <Orders>
            <Order>
                ...
                <ElementIWant>value_I_want</ElementIWant>
            </Order>
            <Order>
                ...
                <ElementIWant>value_I_want</ElementIWant>
            </Order>
            ...
        </Orders>
    </ListOrdersResult>
</ListOrdersRequest>

我将整个XML文件保存到字符串变量response_data,我只想要元素ElementIWant中的值。

在文档中解析this示例,我尝试过这样的事情:

values = ET.fromstring(response_data).findall(".//ElementIWant")
print values

但它只返回一个空列表[]。我尝试过其他事情但没有成功。有任何想法吗?所有建议都赞赏。谢谢!

编辑:这不会打印任何内容:

values = ET.fromstring(response_data)

for i in values.findall(".//ElementIWant"):
    print i.text

2 个答案:

答案 0 :(得分:2)

使用text属性仅打印特定标记的值。

import xml.etree.ElementTree as ET
response_data = '''<ListOrdersRequest>
    <ListOrdersResult>
        <Orders>
            <Order>
                ...
                <ElementIWant>value_I_want</ElementIWant>
            </Order>
            <Order>
                ...
                <ElementIWant>value_I_want</ElementIWant>
            </Order>
            ...
        </Orders>
    </ListOrdersResult>
</ListOrdersRequest>'''
for i in ET.fromstring(response_data).findall(".//ElementIWant"):
    print i.text

<强>输出:

value_I_want
value_I_want

答案 1 :(得分:-1)

尝试使用 BeautifulStoneSoup 要么 ElementTree

几年前我使用BeautifulStoneSoup来解析一个项目的XML,它应该对你有帮助。