使用 ElementTree 解析 Python 中的 XML - findall

Parsing XML in Python with ElementTree - findall

我正在使用文档 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

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

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

values = ET.fromstring(response_data)

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

使用 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

尝试使用 BeautifulStoneSoup 要么 ElementTree

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