python如何从带有具体标记的xml文件中获取所有元素?

python如何从带有具体标记的xml文件中获取所有元素?,python,xml,lxml,Python,Xml,Lxml,我使用lxml.etree 例如,我有如下xml文件: <Company> <Employee> <FirstName>Tanmay</FirstName> <LastName>Patil</LastName> <Valod> <Person Name="Jack"></Person> </Valod>

我使用lxml.etree

例如,我有如下xml文件:

<Company>
  <Employee>
      <FirstName>Tanmay</FirstName>
      <LastName>Patil</LastName>
      <Valod>
          <Person Name="Jack"></Person>
      </Valod>
      <ContactNo>1234567890</ContactNo>
      <Email>tanmaypatil@xyz.com</Email>
      <Address>
           <City>Bangalore</City>
           <State>Karnataka</State>
           <Zip>560212</Zip>
           <Room>
               <Person Name="Bill"></Person>
               <Person Name="John"></Person>
           </Room>
      </Address>
  </Employee>
</Company>

坦美
帕蒂尔
1234567890
tanmaypatil@xyz.com
班加罗尔
卡纳塔克邦
560212
作为搜索的结果,我想要所有的“人”。 类似于“element.getAll('person')”的东西,它返回元素:

<Person Name="Jack"></Person>
<Person Name="Bill"></Person>
<Person Name="John"></Person>

您可以使用XPath

可能是这样的
root.findall(“//Person”)
其中
root
是一个
ElementTree
,因为
/
是查找所有子节点(立即或其他),而
Person
是节点名。

您可以使用XPath

可能是这样的
root.findall(“//Person”)
其中
root
是一个
ElementTree
,因为
/
是查找所有子节点,无论是立即查找还是其他查找,而
Person
是节点名。

请查看官方Python网站上的教程,它准确地显示了您需要的内容

import xml.etree.ElementTree as ET
tree = ET.parse('person.xml')
root = tree.getroot()
for person in root.findall('Person'):
    do something
查看官方Python站点上的教程,它准确地显示了您需要的内容

import xml.etree.ElementTree as ET
tree = ET.parse('person.xml')
root = tree.getroot()
for person in root.findall('Person'):
    do something

我试过了,但它没有返回任何结果。我们需要查看您的代码示例以及XML,以了解出了什么问题,我想我已经修复了它。始终需要在标记名之前添加命名空间。像.findall(“.//{namespace}Person”)或.findall(“.//prefix:Person”,namespaces_加_前缀)我尝试了,但它没有返回任何结果。我们需要查看代码示例以及XML以了解出了什么问题,我想我已经修复了它。始终需要在标记名之前添加命名空间。像.findall(“.//{namespace}Person”)或.findall(“.//prefix:Person”,名称空间_加上_前缀)