解析python2.7中的XML文件

时间:2017-08-04 05:07:17

标签: python

我知道这是一个非常常见的问题,但由于xml文件的性质,我需要的XML文件类型和数据提取类型有点独特。因此,请使用pyhton2.7

,了解有关提取所需数据的步骤的任何帮助

我有以下XML

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>Mango.XYZ_DIG_Team_ABCDEF_Mango_Review</members>
        <members>Mango.XYZ_DIG_Team_Reporting_Mango_Review</members>
        <members>Opportunity.A_T_Occupier_City_Job_List</members>
        <name>ListView</name>
    </types>
    <types>
        <members>Modify_All_Data_Permission</members>
        <members>Opportunity_Alerts_Implementation</members>
        <members>Process_Builder_Permission</members>
        <members>Regional_Business_Support</members>
        <members>Reports_Dashboards_Data_Export_for_Super_Users</members>
        <name>PermissionSet</name>
    </types>
    <types>
        <members>SolutionManager</members>
        <members>Standard</members>
        <name>Profile</name>
    </types>
     <types>
        <members>Mango.Set Verified Date and System Id</members>
        <members>Mango.Update Mango Site With Billing Street%2C City%2C Country</members>
        <members>Mango.Update Family Id on Mango when created</members>
        <members>Opportunity.Set Opportunity Name</members>
        <name>WorkflowRule</name>
    </types>
    <version>38.0</version>
</Package>

我尝试仅从members块中提取PermissionSet。所以最终我会有一个文件,只有像

这样的条目
    Modify_All_Data_Permission
    Opportunity_Alerts_Implementation
    Process_Builder_Permission
    Regional_Business_Support
    Reports_Dashboards_Data_Export_for_Super_Users

我只能通过

提取'name'标签
from xml.dom import minidom

doc = minidom.parse("path_to_xmlFile")


t = doc.getElementsByTagName("types")
for n in t:
    name = n.getElementsByTagName("name")[0]
    print name.firstChild.data

如何提取成员并将其保存到文件中?

注意:'成员'的数量不固定,因人而异。 如果它有用,我也可以尝试使用不同的库。

2 个答案:

答案 0 :(得分:0)

可能最容易使用XPath

import xml.etree.ElementTree as ET

root = ET.parse('file.xml').getroot()
for member in root.findall(".//members/")
    print(member.text)

答案 1 :(得分:0)

这可能会对你有帮助!

import xml.etree.ElementTree as ET

tree = ET.parse('file.xml')
root = tree.getroot()
for data in root[1]:
   print data.text