蟒蛇。如何使用具体标记从xml文件中获取所有元素?

时间:2017-09-27 12:48:41

标签: python xml lxml

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

作为搜索的结果,我想要所有'人'。 像'element.getAll('person')'返回元素的东西:

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

2 个答案:

答案 0 :(得分:1)

您可以使用XPath

https://docs.python.org/2/library/xml.etree.elementtree.html#elementtree-xpath

它可能会像 root.findall("//Person")其中rootElementTree,因为//找到所有子项,无论是立即还是其他,Person是节点名称。

答案 1 :(得分:1)

从官方Python网站查看this教程,该教程准确显示了您的需求。

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