Xml - 使用 Python 按标签查找元素

Ris*_*wat 5 python xml xml-parsing

我正在尝试从一堆 xml 文件中提取一些数据。现在,问题是所有文件的结构并不完全相同,因此,仅迭代子项并提取值是很困难的。

getElementByTag()这样的xml文档有python的方法吗?我已经看到这样的方法适用于 C#、C++ 用户,但找不到任何适用于 Python 的方法。

任何帮助都感激不尽!

Dea*_*ter 11

是的,在包xml.etree 中,您可以找到与 XML 相关的内置函数。(也可用于python2)

您正在寻找的具体内容是findall.

例如:

import xml.etree.ElementTree as ET
tree = ET.fromstring(some_xml_data)
all_name_elements = tree.findall('.//name')
Run Code Online (Sandbox Code Playgroud)

和:

In [1]: some_xml_data = "<help><person><name>dean</name></person></help>"
Run Code Online (Sandbox Code Playgroud)

我得到以下信息:

In [10]: tree.findall(".//name")
Out[10]: [<Element 'name' at 0x7ff921edd390>]
Run Code Online (Sandbox Code Playgroud)

  • `findall` 只在子级搜索。但是,我一直在寻找一直到树底的东西。 (3认同)
  • 那对我不起作用。它只搜索子级别,不搜索低于该级别的内容。另外,您发布的答案中的语法不正确。谢谢! (3认同)
  • @DeanFenster我相信正确的语法应该是“.//name”,以便获取任何名为“name”的元素。“*/name”只会返回该元素的孙子。 (2认同)