如何在python中从XML文件中提取某个部分

How to extract a certain part from XML file in python

提问人:Govind Sajeev 提问时间:7/7/2023 更新时间:7/8/2023 访问量:75

问:

下面是一个XML文件,我只想从python中提取某些部分,例如: 我想提取如下。我尝试了几种方法来解析XML文件。但我失败了。我不想传递整个 XML,因为在处理大 xml 文件的情况下处理时间很长。所以我正在尝试传递唯一必要的代码。有人可以帮我解决这个问题吗?

<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE POWERMART SYSTEM "powrmart.dtd"><POWERMART CREATION_DATE="12/27/2018 10:04:04">
    <REPOSITORY NAME="Sample" CODEPAGE="Sample">
        <FOLDER NAME="Sample" DESCRIPTION="This is a folder containing java mapping samples" SHARED="NOTSHARED" OWNER="Administrator" GROUP="Administrators" PERMISSIONS="Sample" UUID="aaaa">
            <SOURCE NAME="Dependent" DBDNAME="Oracle" BUSINESSNAME="" DESCRIPTION="" OBJECTVERSION="1" OWNERNAME="APIUSER" DATABASETYPE="Oracle" VERSIONNUMBER="1">
                <SOURCEFIELD NAME="Title" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="3" SCALE="0" NULLABLE="NOTNULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="3" PHYSICALOFFSET="0" PHYSICALLENGTH="3" FIELDNUMBER="1" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="First_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="10" PHYSICALOFFSET="0" PHYSICALLENGTH="10" FIELDNUMBER="2" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Middle_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="6" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="6" PHYSICALOFFSET="0" PHYSICALLENGTH="6" FIELDNUMBER="3" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Last_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="9" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="9" PHYSICALOFFSET="0" PHYSICALLENGTH="9" FIELDNUMBER="4" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Member_ID" BUSINESSNAME="" DESCRIPTION="" DATATYPE="number" KEYTYPE="NOT A KEY" PRECISION="15" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="15" PHYSICALOFFSET="0" PHYSICALLENGTH="15" FIELDNUMBER="5" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Member_Suffix" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="10" PHYSICALOFFSET="0" PHYSICALLENGTH="10" FIELDNUMBER="6" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Birth_Date" BUSINESSNAME="" DESCRIPTION="" DATATYPE="Date" KEYTYPE="NOT A KEY" PRECISION="19" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="19" PHYSICALOFFSET="0" PHYSICALLENGTH="19" FIELDNUMBER="7" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Gender_Code" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="1" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="1" PHYSICALOFFSET="0" PHYSICALLENGTH="1" FIELDNUMBER="8" FIELDPROPERTY="0" HIDDEN="NO"/>>
            </SOURCE>
            <TARGET NAME="Party" BUSINESSNAME="" DESCRIPTION="" OBJECTVERSION="1" CONSTRAINT="" TABLEOPTIONS="" DATABASETYPE="Oracle" VERSIONNUMBER="1">
                <TARGETFIELD NAME="Title" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="3" SCALE="0" FIELDNUMBER="1" NULLABLE="NULL" PICTURETEXT=""/>
                <TARGETFIELD NAME="Gender" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="1" SCALE="0" FIELDNUMBER="2" NULLABLE="NULL" PICTURETEXT=""/>
                <TARGETFIELD NAME="First_Name" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" FIELDNUMBER="3" NULLABLE="NULL" PICTURETEXT=""/>
                <TARGETFIELD NAME="Middle_Name" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="6" SCALE="0" FIELDNUMBER="4" NULLABLE="NULL" PICTURETEXT=""/>
                <TARGETFIELD NAME="Last_Name" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" FIELDNUMBER="5" NULLABLE="NULL" PICTURETEXT=""/>
                <TARGETFIELD NAME="Member_Identifier" BUSINESSNAME="" DATATYPE="number" KEYTYPE="NOT A KEY" PRECISION="15" SCALE="0" FIELDNUMBER="6" NULLABLE="NULL" PICTURETEXT=""/>
                <TARGETFIELD NAME="Member_Suffix" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" FIELDNUMBER="7" NULLABLE="NULL" PICTURETEXT=""/>
            </TARGET>
            <MAPPING NAME="load_dep_party" DESCRIPTION="" OBJECTVERSION="1" ISVALID="YES" VERSIONNUMBER="1">
                <TRANSFORMATION NAME="SQ_Dependent" DESCRIPTION="" TYPE="Source Qualifier" OBJECTVERSION="1" REUSABLE="NO" VERSIONNUMBER="1">
                    <TRANSFORMFIELD NAME="Title" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="3" SCALE="0" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TRANSFORMFIELD NAME="First_Name" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="10" SCALE="0" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TRANSFORMFIELD NAME="Middle_Name" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="6" SCALE="0" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TRANSFORMFIELD NAME="Last_Name" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="9" SCALE="0" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TRANSFORMFIELD NAME="Member_ID" DESCRIPTION="" DATATYPE="double" PORTTYPE="INPUT/OUTPUT" PRECISION="15" SCALE="0" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TRANSFORMFIELD NAME="Member_Suffix" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="10" SCALE="0" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TRANSFORMFIELD NAME="Birth_Date" DESCRIPTION="" DATATYPE="date/time" PORTTYPE="INPUT/OUTPUT" PRECISION="29" SCALE="9" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TRANSFORMFIELD NAME="Gender_Code" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="1" SCALE="0" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TABLEATTRIBUTE NAME="User Defined Join" VALUE=""/>
                    <TABLEATTRIBUTE NAME="Source Filter" VALUE=""/>
                    <TABLEATTRIBUTE NAME="Number Of Sorted Ports" VALUE="0"/>
                    <TABLEATTRIBUTE NAME="Tracing Level" VALUE="Normal"/>
                </TRANSFORMATION>
                <INSTANCE NAME="Dependent" DESCRIPTION="" TYPE="SOURCE" TRANSFORMATION_TYPE="Source Definition" TRANSFORMATION_NAME="Dependent" DBDNAME="Oracle"/>
                <INSTANCE NAME="SQ_Dependent" DESCRIPTION="" TYPE="TRANSFORMATION" REUSABLE="NO" TRANSFORMATION_TYPE="Source Qualifier" TRANSFORMATION_NAME="SQ_Dependent">
                    <ASSOCIATED_SOURCE_INSTANCE NAME="Dependent"/>
                </INSTANCE>
                <INSTANCE NAME="Party" DESCRIPTION="" TYPE="TARGET" TRANSFORMATION_TYPE="Target Definition" TRANSFORMATION_NAME="Party"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Title" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Title"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="First_Name" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="First_Name"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Middle_Name" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Middle_Name"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Last_Name" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Last_Name"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Member_ID" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Member_ID"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Member_Suffix" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Member_Suffix"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Birth_Date" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Birth_Date"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Gender_Code" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Gender_Code"/>
            </MAPPING>
            <CONFIG NAME="default_session_config" DESCRIPTION="Default session configuration object" ISDEFAULT="YES" VERSIONNUMBER="1">
                <ATTRIBUTE NAME="Advanced" VALUE=""/>
                <ATTRIBUTE NAME="Constraint based load ordering" VALUE="NO"/>
                <ATTRIBUTE NAME="Cache LOOKUP() function" VALUE="YES"/>
                <ATTRIBUTE NAME="Default buffer block size" VALUE="Auto"/>
                <ATTRIBUTE NAME="Line Sequential buffer length" VALUE="1024"/>
                <ATTRIBUTE NAME="Maximum Memory Allowed For Auto Memory Attributes" VALUE="0"/>
                <ATTRIBUTE NAME="Maximum Percentage of Total Memory Allowed For Auto Memory Attributes" VALUE="5"/>
                <ATTRIBUTE NAME="Additional Concurrent Pipelines for Lookup Cache Creation" VALUE="0"/>
                <ATTRIBUTE NAME="Custom Properties" VALUE=""/>
                <ATTRIBUTE NAME="Pre-build lookup cache" VALUE="Auto"/>
                <ATTRIBUTE NAME="Optimization Level" VALUE="Medium"/>
                <ATTRIBUTE NAME="DateTime Format String" VALUE="MM/DD/YYYY HH24:MI:SS"/>
                <ATTRIBUTE NAME="Pre 85 Timestamp Compatibility" VALUE="YES"/>
                <ATTRIBUTE NAME="Log Options" VALUE="0"/>
                <ATTRIBUTE NAME="Save session log by" VALUE="Session runs"/>
            </CONFIG>
            <WORKFLOW NAME="wf_load_dep_party" DESCRIPTION="workflow description" SERVERNAME="diw_intgs_srvc" SERVER_DOMAINNAME="domaininfa" SCHEDULERNAME="Scheduler" REUSABLE_SCHEDULER="NO" ISVALID="YES" ISENABLED="YES" SUSPEND_ON_ERROR="NO" TASKS_MUST_RUN_ON_SERVER="NO" VERSIONNUMBER="1" ISSERVICE="NO" ISRUNNABLESERVICE="NO">
                <SCHEDULER NAME="Scheduler" DESCRIPTION="" REUSABLE="NO" VERSIONNUMBER="1">
                    <SCHEDULEINFO SCHEDULETYPE="ONDEMAND"/>
                </SCHEDULER>
                <TASK NAME="Start" DESCRIPTION="" TYPE="Start" REUSABLE="NO" VERSIONNUMBER="1"/>
                <SESSION NAME="s_load_dep_party" REUSABLE="NO" ISVALID="YES" MAPPINGNAME="load_dep_party" SORTORDER="Binary" VERSIONNUMBER="1">
                    <SESSTRANSFORMATIONINST SINSTANCENAME="Dependent" TRANSFORMATIONNAME="Dependent" TRANSFORMATIONTYPE="Source Definition" PARTITIONTYPE="NONE" ISREPARTITIONPOINT="YES" STAGE="1" PIPELINE="1"/>
                    <SESSTRANSFORMATIONINST SINSTANCENAME="SQ_Dependent" TRANSFORMATIONNAME="SQ_Dependent" TRANSFORMATIONTYPE="Source Qualifier" PARTITIONTYPE="NONE" ISREPARTITIONPOINT="YES" STAGE="1" PIPELINE="1"/>
                    <SESSTRANSFORMATIONINST SINSTANCENAME="Party" TRANSFORMATIONNAME="Party" TRANSFORMATIONTYPE="Target Definition" PARTITIONTYPE="NONE" ISREPARTITIONPOINT="YES" STAGE="1" PIPELINE="1"/>
                    <CONFIGREFERENCE REFOBJECTNAME="default_session_config" TYPE="Session config"/>
                    <SESSIONEXTENSION NAME="Relational Reader" TYPE="READER" SUBTYPE="Relational Reader" SINSTANCENAME="Dependent" TRANSFORMATIONTYPE="Source Definition" DSQINSTNAME="SQ_Dependent" DSQINSTTYPE="Source Qualifier"/>
                    <SESSIONEXTENSION NAME="Relational Reader" TYPE="READER" SUBTYPE="Relational Reader" SINSTANCENAME="SQ_Dependent" TRANSFORMATIONTYPE="Source Qualifier">
                        <CONNECTIONREFERENCE CNXREFNAME="DB Connection" CONNECTIONTYPE="Relational" CONNECTIONSUBTYPE="Oracle" CONNECTIONNUMBER="1" CONNECTIONNAME="conn1" VARIABLE=""/>
                    </SESSIONEXTENSION>
                    <SESSIONEXTENSION NAME="Relational Writer" TYPE="WRITER" SUBTYPE="Relational Writer" SINSTANCENAME="Party" TRANSFORMATIONTYPE="Target Definition">
                        <CONNECTIONREFERENCE CNXREFNAME="DB Connection" CONNECTIONTYPE="relational" CONNECTIONSUBTYPE="Oracle" CONNECTIONNUMBER="1" CONNECTIONNAME="conn2" VARIABLE=""/>
                        <ATTRIBUTE NAME="Target load type" VALUE="Bulk"/>
                        <ATTRIBUTE NAME="Insert" VALUE="YES"/>
                        <ATTRIBUTE NAME="Update as Update" VALUE="YES"/>
                        <ATTRIBUTE NAME="Update as Insert" VALUE="NO"/>
                        <ATTRIBUTE NAME="Update else Insert" VALUE="NO"/>
                        <ATTRIBUTE NAME="Delete" VALUE="YES"/>
                        <ATTRIBUTE NAME="Truncate target table option" VALUE="NO"/>
                        <ATTRIBUTE NAME="Reject file directory" VALUE="$PMBadFileDir\"/>
                        <ATTRIBUTE NAME="Reject filename" VALUE="output1.bad"/>
                    </SESSIONEXTENSION>
                    <ATTRIBUTE NAME="General Options" VALUE=""/>
                    <ATTRIBUTE NAME="Write Backward Compatible Session Log File" VALUE="NO"/>
                    <ATTRIBUTE NAME="Session Log File Name" VALUE="t_CDB.log"/>
                    <ATTRIBUTE NAME="Session Log File directory" VALUE="$PMSessionLogDir\"/>
                    <ATTRIBUTE NAME="Parameter Filename" VALUE=""/>
                    <ATTRIBUTE NAME="Enable Test Load" VALUE="NO"/>
                    <ATTRIBUTE NAME="$Source connection value" VALUE=""/>
                    <ATTRIBUTE NAME="$Target connection value" VALUE=""/>
                    <ATTRIBUTE NAME="Treat source rows as" VALUE="Insert"/>
                    <ATTRIBUTE NAME="Allow Temporary View for Pushdown" VALUE="NO"/>
                    <ATTRIBUTE NAME="Allow Temporary Sequence for Pushdown" VALUE="NO"/>
                    <ATTRIBUTE NAME="Allow Pushdown for User Incompatible Connections" VALUE="NO"/>
                </SESSION>
                <TASKINSTANCE NAME="Start" DESCRIPTION="" TASKTYPE="Start" TASKNAME="Start" ISENABLED="YES" REUSABLE="NO"/>
                <TASKINSTANCE NAME="s_load_dep_party" TASKTYPE="Session" TASKNAME="s_load_dep_party" ISENABLED="YES" REUSABLE="NO" TREAT_INPUTLINK_AS_AND="NO" FAIL_PARENT_IF_INSTANCE_FAILS="YES" FAIL_PARENT_IF_INSTANCE_DID_NOT_RUN="YES"/>
                <WORKFLOWLINK FROMTASK="Start" TOTASK="s_load_dep_party" CONDITION=""/>
                <WORKFLOWVARIABLE NAME="$s_load_dep_party.StartTime" DESCRIPTION="The time this task started" USERDEFINED="NO" DATATYPE="date/time" DEFAULTVALUE="" ISPERSISTENT="NO" ISNULL="NO"/>
                <WORKFLOWVARIABLE NAME="$s_load_dep_party.EndTime" DESCRIPTION="The time this task completed" USERDEFINED="NO" DATATYPE="date/time" DEFAULTVALUE="" ISPERSISTENT="NO" ISNULL="NO"/>
                <WORKFLOWVARIABLE NAME="$s_load_dep_party.Status" DESCRIPTION="Status of this task&amp;apos;s execution" USERDEFINED="NO" DATATYPE="integer" DEFAULTVALUE="" ISPERSISTENT="NO" ISNULL="NO"/>
                <WORKFLOWVARIABLE NAME="$s_load_dep_party.PrevTaskStatus" DESCRIPTION="Status of the previous task that is not disabled" USERDEFINED="NO" DATATYPE="integer" DEFAULTVALUE="" ISPERSISTENT="NO" ISNULL="NO"/>
                <ATTRIBUTE NAME="Write Backward Compatible Workflow Log File" VALUE="NO"/>
                <ATTRIBUTE NAME="Workflow Log File Name" VALUE="wf_CDB_Transform_Party_Personal_Customer.log"/>
                <ATTRIBUTE NAME="Workflow Log File Directory" VALUE="$PMWorkflowLogDir\"/>
                <ATTRIBUTE NAME="Save Workflow log by" VALUE="By runs"/>
                <ATTRIBUTE NAME="Save workflow log for these runs" VALUE="0"/>
                <ATTRIBUTE NAME="Service Name" VALUE=""/>
                <ATTRIBUTE NAME="Service Timeout" VALUE="0"/>
                <ATTRIBUTE NAME="Is Service Visible" VALUE="NO"/>
                <ATTRIBUTE NAME="Is Service Protected" VALUE="NO"/>
                <ATTRIBUTE NAME="Fail task after wait time" VALUE="0"/>
            </WORKFLOW>
        </FOLDER>
    </REPOSITORY>
</POWERMART>

输出应如下所示,仅包含必要的代码

<SOURCE NAME="Dependent" DBDNAME="Oracle" BUSINESSNAME="" DESCRIPTION="" OBJECTVERSION="1" OWNERNAME="APIUSER" DATABASETYPE="Oracle" VERSIONNUMBER="1">
                <SOURCEFIELD NAME="Title" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="3" SCALE="0" NULLABLE="NOTNULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="3" PHYSICALOFFSET="0" PHYSICALLENGTH="3" FIELDNUMBER="1" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="First_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="10" PHYSICALOFFSET="0" PHYSICALLENGTH="10" FIELDNUMBER="2" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Middle_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="6" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="6" PHYSICALOFFSET="0" PHYSICALLENGTH="6" FIELDNUMBER="3" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Last_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="9" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="9" PHYSICALOFFSET="0" PHYSICALLENGTH="9" FIELDNUMBER="4" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Member_ID" BUSINESSNAME="" DESCRIPTION="" DATATYPE="number" KEYTYPE="NOT A KEY" PRECISION="15" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="15" PHYSICALOFFSET="0" PHYSICALLENGTH="15" FIELDNUMBER="5" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Member_Suffix" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="10" PHYSICALOFFSET="0" PHYSICALLENGTH="10" FIELDNUMBER="6" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Birth_Date" BUSINESSNAME="" DESCRIPTION="" DATATYPE="Date" KEYTYPE="NOT A KEY" PRECISION="19" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="19" PHYSICALOFFSET="0" PHYSICALLENGTH="19" FIELDNUMBER="7" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Gender_Code" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="1" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="1" PHYSICALOFFSET="0" PHYSICALLENGTH="1" FIELDNUMBER="8" FIELDPROPERTY="0" HIDDEN="NO"/>>
</SOURCE>
python-3.x xml xml 解析

评论


答:

0赞 Zero 7/7/2023 #1

您可以在 python 中解析 XML 文件。BeautifulSouplxml

from bs4 import BeautifulSoup as bs

xml = '''
<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE POWERMART SYSTEM "powrmart.dtd"><POWERMART CREATION_DATE="12/27/2018 10:04:04">
    <REPOSITORY NAME="Sample" CODEPAGE="Sample">
        <FOLDER NAME="Sample" DESCRIPTION="This is a folder containing java mapping samples" SHARED="NOTSHARED" OWNER="Administrator" GROUP="Administrators" PERMISSIONS="Sample" UUID="aaaa">
            <SOURCE NAME="Dependent" DBDNAME="Oracle" BUSINESSNAME="" DESCRIPTION="" OBJECTVERSION="1" OWNERNAME="APIUSER" DATABASETYPE="Oracle" VERSIONNUMBER="1">
                <SOURCEFIELD NAME="Title" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="3" SCALE="0" NULLABLE="NOTNULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="3" PHYSICALOFFSET="0" PHYSICALLENGTH="3" FIELDNUMBER="1" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="First_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="10" PHYSICALOFFSET="0" PHYSICALLENGTH="10" FIELDNUMBER="2" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Middle_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="6" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="6" PHYSICALOFFSET="0" PHYSICALLENGTH="6" FIELDNUMBER="3" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Last_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="9" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="9" PHYSICALOFFSET="0" PHYSICALLENGTH="9" FIELDNUMBER="4" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Member_ID" BUSINESSNAME="" DESCRIPTION="" DATATYPE="number" KEYTYPE="NOT A KEY" PRECISION="15" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="15" PHYSICALOFFSET="0" PHYSICALLENGTH="15" FIELDNUMBER="5" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Member_Suffix" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="10" PHYSICALOFFSET="0" PHYSICALLENGTH="10" FIELDNUMBER="6" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Birth_Date" BUSINESSNAME="" DESCRIPTION="" DATATYPE="Date" KEYTYPE="NOT A KEY" PRECISION="19" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="19" PHYSICALOFFSET="0" PHYSICALLENGTH="19" FIELDNUMBER="7" FIELDPROPERTY="0" HIDDEN="NO"/>
                <SOURCEFIELD NAME="Gender_Code" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="1" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="1" PHYSICALOFFSET="0" PHYSICALLENGTH="1" FIELDNUMBER="8" FIELDPROPERTY="0" HIDDEN="NO"/>>
            </SOURCE>
            <TARGET NAME="Party" BUSINESSNAME="" DESCRIPTION="" OBJECTVERSION="1" CONSTRAINT="" TABLEOPTIONS="" DATABASETYPE="Oracle" VERSIONNUMBER="1">
                <TARGETFIELD NAME="Title" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="3" SCALE="0" FIELDNUMBER="1" NULLABLE="NULL" PICTURETEXT=""/>
                <TARGETFIELD NAME="Gender" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="1" SCALE="0" FIELDNUMBER="2" NULLABLE="NULL" PICTURETEXT=""/>
                <TARGETFIELD NAME="First_Name" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" FIELDNUMBER="3" NULLABLE="NULL" PICTURETEXT=""/>
                <TARGETFIELD NAME="Middle_Name" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="6" SCALE="0" FIELDNUMBER="4" NULLABLE="NULL" PICTURETEXT=""/>
                <TARGETFIELD NAME="Last_Name" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" FIELDNUMBER="5" NULLABLE="NULL" PICTURETEXT=""/>
                <TARGETFIELD NAME="Member_Identifier" BUSINESSNAME="" DATATYPE="number" KEYTYPE="NOT A KEY" PRECISION="15" SCALE="0" FIELDNUMBER="6" NULLABLE="NULL" PICTURETEXT=""/>
                <TARGETFIELD NAME="Member_Suffix" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" FIELDNUMBER="7" NULLABLE="NULL" PICTURETEXT=""/>
            </TARGET>
            <MAPPING NAME="load_dep_party" DESCRIPTION="" OBJECTVERSION="1" ISVALID="YES" VERSIONNUMBER="1">
                <TRANSFORMATION NAME="SQ_Dependent" DESCRIPTION="" TYPE="Source Qualifier" OBJECTVERSION="1" REUSABLE="NO" VERSIONNUMBER="1">
                    <TRANSFORMFIELD NAME="Title" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="3" SCALE="0" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TRANSFORMFIELD NAME="First_Name" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="10" SCALE="0" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TRANSFORMFIELD NAME="Middle_Name" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="6" SCALE="0" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TRANSFORMFIELD NAME="Last_Name" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="9" SCALE="0" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TRANSFORMFIELD NAME="Member_ID" DESCRIPTION="" DATATYPE="double" PORTTYPE="INPUT/OUTPUT" PRECISION="15" SCALE="0" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TRANSFORMFIELD NAME="Member_Suffix" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="10" SCALE="0" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TRANSFORMFIELD NAME="Birth_Date" DESCRIPTION="" DATATYPE="date/time" PORTTYPE="INPUT/OUTPUT" PRECISION="29" SCALE="9" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TRANSFORMFIELD NAME="Gender_Code" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="1" SCALE="0" PICTURETEXT="" DEFAULTVALUE=""/>
                    <TABLEATTRIBUTE NAME="User Defined Join" VALUE=""/>
                    <TABLEATTRIBUTE NAME="Source Filter" VALUE=""/>
                    <TABLEATTRIBUTE NAME="Number Of Sorted Ports" VALUE="0"/>
                    <TABLEATTRIBUTE NAME="Tracing Level" VALUE="Normal"/>
                </TRANSFORMATION>
                <INSTANCE NAME="Dependent" DESCRIPTION="" TYPE="SOURCE" TRANSFORMATION_TYPE="Source Definition" TRANSFORMATION_NAME="Dependent" DBDNAME="Oracle"/>
                <INSTANCE NAME="SQ_Dependent" DESCRIPTION="" TYPE="TRANSFORMATION" REUSABLE="NO" TRANSFORMATION_TYPE="Source Qualifier" TRANSFORMATION_NAME="SQ_Dependent">
                    <ASSOCIATED_SOURCE_INSTANCE NAME="Dependent"/>
                </INSTANCE>
                <INSTANCE NAME="Party" DESCRIPTION="" TYPE="TARGET" TRANSFORMATION_TYPE="Target Definition" TRANSFORMATION_NAME="Party"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Title" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Title"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="First_Name" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="First_Name"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Middle_Name" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Middle_Name"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Last_Name" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Last_Name"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Member_ID" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Member_ID"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Member_Suffix" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Member_Suffix"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Birth_Date" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Birth_Date"/>
                <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Gender_Code" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Gender_Code"/>
            </MAPPING>
            <CONFIG NAME="default_session_config" DESCRIPTION="Default session configuration object" ISDEFAULT="YES" VERSIONNUMBER="1">
                <ATTRIBUTE NAME="Advanced" VALUE=""/>
                <ATTRIBUTE NAME="Constraint based load ordering" VALUE="NO"/>
                <ATTRIBUTE NAME="Cache LOOKUP() function" VALUE="YES"/>
                <ATTRIBUTE NAME="Default buffer block size" VALUE="Auto"/>
                <ATTRIBUTE NAME="Line Sequential buffer length" VALUE="1024"/>
                <ATTRIBUTE NAME="Maximum Memory Allowed For Auto Memory Attributes" VALUE="0"/>
                <ATTRIBUTE NAME="Maximum Percentage of Total Memory Allowed For Auto Memory Attributes" VALUE="5"/>
                <ATTRIBUTE NAME="Additional Concurrent Pipelines for Lookup Cache Creation" VALUE="0"/>
                <ATTRIBUTE NAME="Custom Properties" VALUE=""/>
                <ATTRIBUTE NAME="Pre-build lookup cache" VALUE="Auto"/>
                <ATTRIBUTE NAME="Optimization Level" VALUE="Medium"/>
                <ATTRIBUTE NAME="DateTime Format String" VALUE="MM/DD/YYYY HH24:MI:SS"/>
                <ATTRIBUTE NAME="Pre 85 Timestamp Compatibility" VALUE="YES"/>
                <ATTRIBUTE NAME="Log Options" VALUE="0"/>
                <ATTRIBUTE NAME="Save session log by" VALUE="Session runs"/>
            </CONFIG>
            <WORKFLOW NAME="wf_load_dep_party" DESCRIPTION="workflow description" SERVERNAME="diw_intgs_srvc" SERVER_DOMAINNAME="domaininfa" SCHEDULERNAME="Scheduler" REUSABLE_SCHEDULER="NO" ISVALID="YES" ISENABLED="YES" SUSPEND_ON_ERROR="NO" TASKS_MUST_RUN_ON_SERVER="NO" VERSIONNUMBER="1" ISSERVICE="NO" ISRUNNABLESERVICE="NO">
                <SCHEDULER NAME="Scheduler" DESCRIPTION="" REUSABLE="NO" VERSIONNUMBER="1">
                    <SCHEDULEINFO SCHEDULETYPE="ONDEMAND"/>
                </SCHEDULER>
                <TASK NAME="Start" DESCRIPTION="" TYPE="Start" REUSABLE="NO" VERSIONNUMBER="1"/>
                <SESSION NAME="s_load_dep_party" REUSABLE="NO" ISVALID="YES" MAPPINGNAME="load_dep_party" SORTORDER="Binary" VERSIONNUMBER="1">
                    <SESSTRANSFORMATIONINST SINSTANCENAME="Dependent" TRANSFORMATIONNAME="Dependent" TRANSFORMATIONTYPE="Source Definition" PARTITIONTYPE="NONE" ISREPARTITIONPOINT="YES" STAGE="1" PIPELINE="1"/>
                    <SESSTRANSFORMATIONINST SINSTANCENAME="SQ_Dependent" TRANSFORMATIONNAME="SQ_Dependent" TRANSFORMATIONTYPE="Source Qualifier" PARTITIONTYPE="NONE" ISREPARTITIONPOINT="YES" STAGE="1" PIPELINE="1"/>
                    <SESSTRANSFORMATIONINST SINSTANCENAME="Party" TRANSFORMATIONNAME="Party" TRANSFORMATIONTYPE="Target Definition" PARTITIONTYPE="NONE" ISREPARTITIONPOINT="YES" STAGE="1" PIPELINE="1"/>
                    <CONFIGREFERENCE REFOBJECTNAME="default_session_config" TYPE="Session config"/>
                    <SESSIONEXTENSION NAME="Relational Reader" TYPE="READER" SUBTYPE="Relational Reader" SINSTANCENAME="Dependent" TRANSFORMATIONTYPE="Source Definition" DSQINSTNAME="SQ_Dependent" DSQINSTTYPE="Source Qualifier"/>
                    <SESSIONEXTENSION NAME="Relational Reader" TYPE="READER" SUBTYPE="Relational Reader" SINSTANCENAME="SQ_Dependent" TRANSFORMATIONTYPE="Source Qualifier">
                        <CONNECTIONREFERENCE CNXREFNAME="DB Connection" CONNECTIONTYPE="Relational" CONNECTIONSUBTYPE="Oracle" CONNECTIONNUMBER="1" CONNECTIONNAME="conn1" VARIABLE=""/>
                    </SESSIONEXTENSION>
                    <SESSIONEXTENSION NAME="Relational Writer" TYPE="WRITER" SUBTYPE="Relational Writer" SINSTANCENAME="Party" TRANSFORMATIONTYPE="Target Definition">
                        <CONNECTIONREFERENCE CNXREFNAME="DB Connection" CONNECTIONTYPE="relational" CONNECTIONSUBTYPE="Oracle" CONNECTIONNUMBER="1" CONNECTIONNAME="conn2" VARIABLE=""/>
                        <ATTRIBUTE NAME="Target load type" VALUE="Bulk"/>
                        <ATTRIBUTE NAME="Insert" VALUE="YES"/>
                        <ATTRIBUTE NAME="Update as Update" VALUE="YES"/>
                        <ATTRIBUTE NAME="Update as Insert" VALUE="NO"/>
                        <ATTRIBUTE NAME="Update else Insert" VALUE="NO"/>
                        <ATTRIBUTE NAME="Delete" VALUE="YES"/>
                        <ATTRIBUTE NAME="Truncate target table option" VALUE="NO"/>
                        <ATTRIBUTE NAME="Reject file directory" VALUE="$PMBadFileDir\"/>
                        <ATTRIBUTE NAME="Reject filename" VALUE="output1.bad"/>
                    </SESSIONEXTENSION>
                    <ATTRIBUTE NAME="General Options" VALUE=""/>
                    <ATTRIBUTE NAME="Write Backward Compatible Session Log File" VALUE="NO"/>
                    <ATTRIBUTE NAME="Session Log File Name" VALUE="t_CDB.log"/>
                    <ATTRIBUTE NAME="Session Log File directory" VALUE="$PMSessionLogDir\"/>
                    <ATTRIBUTE NAME="Parameter Filename" VALUE=""/>
                    <ATTRIBUTE NAME="Enable Test Load" VALUE="NO"/>
                    <ATTRIBUTE NAME="$Source connection value" VALUE=""/>
                    <ATTRIBUTE NAME="$Target connection value" VALUE=""/>
                    <ATTRIBUTE NAME="Treat source rows as" VALUE="Insert"/>
                    <ATTRIBUTE NAME="Allow Temporary View for Pushdown" VALUE="NO"/>
                    <ATTRIBUTE NAME="Allow Temporary Sequence for Pushdown" VALUE="NO"/>
                    <ATTRIBUTE NAME="Allow Pushdown for User Incompatible Connections" VALUE="NO"/>
                </SESSION>
                <TASKINSTANCE NAME="Start" DESCRIPTION="" TASKTYPE="Start" TASKNAME="Start" ISENABLED="YES" REUSABLE="NO"/>
                <TASKINSTANCE NAME="s_load_dep_party" TASKTYPE="Session" TASKNAME="s_load_dep_party" ISENABLED="YES" REUSABLE="NO" TREAT_INPUTLINK_AS_AND="NO" FAIL_PARENT_IF_INSTANCE_FAILS="YES" FAIL_PARENT_IF_INSTANCE_DID_NOT_RUN="YES"/>
                <WORKFLOWLINK FROMTASK="Start" TOTASK="s_load_dep_party" CONDITION=""/>
                <WORKFLOWVARIABLE NAME="$s_load_dep_party.StartTime" DESCRIPTION="The time this task started" USERDEFINED="NO" DATATYPE="date/time" DEFAULTVALUE="" ISPERSISTENT="NO" ISNULL="NO"/>
                <WORKFLOWVARIABLE NAME="$s_load_dep_party.EndTime" DESCRIPTION="The time this task completed" USERDEFINED="NO" DATATYPE="date/time" DEFAULTVALUE="" ISPERSISTENT="NO" ISNULL="NO"/>
                <WORKFLOWVARIABLE NAME="$s_load_dep_party.Status" DESCRIPTION="Status of this task&amp;apos;s execution" USERDEFINED="NO" DATATYPE="integer" DEFAULTVALUE="" ISPERSISTENT="NO" ISNULL="NO"/>
                <WORKFLOWVARIABLE NAME="$s_load_dep_party.PrevTaskStatus" DESCRIPTION="Status of the previous task that is not disabled" USERDEFINED="NO" DATATYPE="integer" DEFAULTVALUE="" ISPERSISTENT="NO" ISNULL="NO"/>
                <ATTRIBUTE NAME="Write Backward Compatible Workflow Log File" VALUE="NO"/>
                <ATTRIBUTE NAME="Workflow Log File Name" VALUE="wf_CDB_Transform_Party_Personal_Customer.log"/>
                <ATTRIBUTE NAME="Workflow Log File Directory" VALUE="$PMWorkflowLogDir\"/>
                <ATTRIBUTE NAME="Save Workflow log by" VALUE="By runs"/>
                <ATTRIBUTE NAME="Save workflow log for these runs" VALUE="0"/>
                <ATTRIBUTE NAME="Service Name" VALUE=""/>
                <ATTRIBUTE NAME="Service Timeout" VALUE="0"/>
                <ATTRIBUTE NAME="Is Service Visible" VALUE="NO"/>
                <ATTRIBUTE NAME="Is Service Protected" VALUE="NO"/>
                <ATTRIBUTE NAME="Fail task after wait time" VALUE="0"/>
            </WORKFLOW>
        </FOLDER>
    </REPOSITORY>
</POWERMART>
'''

print(bs(xml, 'lxml').find('source', {'name': 'Dependent'}).prettify())

在最后一行中,我正在解析 XML 数据,使用您需要的过滤器查找源。

输出为:

<source businessname="" databasetype="Oracle" dbdname="Oracle" description="" name="Dependent" objectversion="1" ownername="APIUSER" versionnumber="1">
 <sourcefield businessname="" datatype="varchar2" description="" fieldnumber="1" fieldproperty="0" fieldtype="ELEMITEM" hidden="NO" keytype="NOT A KEY" length="3" level="0" name="Title" nullable="NOTNULL" occurs="0" offset="0" physicallength="3" physicaloffset="0" picturetext="" precision="3" scale="0" usage_flags="">
 </sourcefield>
 <sourcefield businessname="" datatype="varchar2" description="" fieldnumber="2" fieldproperty="0" fieldtype="ELEMITEM" hidden="NO" keytype="NOT A KEY" length="10" level="0" name="First_Name" nullable="NULL" occurs="0" offset="0" physicallength="10" physicaloffset="0" picturetext="" precision="10" scale="0" usage_flags="">
 </sourcefield>
 <sourcefield businessname="" datatype="varchar2" description="" fieldnumber="3" fieldproperty="0" fieldtype="ELEMITEM" hidden="NO" keytype="NOT A KEY" length="6" level="0" name="Middle_Name" nullable="NULL" occurs="0" offset="0" physicallength="6" physicaloffset="0" picturetext="" precision="6" scale="0" usage_flags="">
 </sourcefield>
 <sourcefield businessname="" datatype="varchar2" description="" fieldnumber="4" fieldproperty="0" fieldtype="ELEMITEM" hidden="NO" keytype="NOT A KEY" length="9" level="0" name="Last_Name" nullable="NULL" occurs="0" offset="0" physicallength="9" physicaloffset="0" picturetext="" precision="9" scale="0" usage_flags="">
 </sourcefield>
 <sourcefield businessname="" datatype="number" description="" fieldnumber="5" fieldproperty="0" fieldtype="ELEMITEM" hidden="NO" keytype="NOT A KEY" length="15" level="0" name="Member_ID" nullable="NULL" occurs="0" offset="0" physicallength="15" physicaloffset="0" picturetext="" precision="15" scale="0" usage_flags="">
 </sourcefield>
 <sourcefield businessname="" datatype="varchar2" description="" fieldnumber="6" fieldproperty="0" fieldtype="ELEMITEM" hidden="NO" keytype="NOT A KEY" length="10" level="0" name="Member_Suffix" nullable="NULL" occurs="0" offset="0" physicallength="10" physicaloffset="0" picturetext="" precision="10" scale="0" usage_flags="">
 </sourcefield>
 <sourcefield businessname="" datatype="Date" description="" fieldnumber="7" fieldproperty="0" fieldtype="ELEMITEM" hidden="NO" keytype="NOT A KEY" length="19" level="0" name="Birth_Date" nullable="NULL" occurs="0" offset="0" physicallength="19" physicaloffset="0" picturetext="" precision="19" scale="0" usage_flags="">
 </sourcefield>
 <sourcefield businessname="" datatype="varchar2" description="" fieldnumber="8" fieldproperty="0" fieldtype="ELEMITEM" hidden="NO" keytype="NOT A KEY" length="1" level="0" name="Gender_Code" nullable="NULL" occurs="0" offset="0" physicallength="1" physicaloffset="0" picturetext="" precision="1" scale="0" usage_flags="">
 </sourcefield>
 &gt;
</source>
0赞 Hermann12 7/8/2023 #2

对于巨大的 xml 文件,您可以使用 iterparse():

import xml.etree.ElementTree as ET
import pandas as pd

for event, elem in ET.iterparse(file, events=("end",)):
    if elem.tag == "SOURCE":
        tree = ET.ElementTree(elem)
        ET.indent(tree, space='  ')
        tree.write("out.xml", xml_declaration=True, encoding='utf_8')
        df = pd.read_xml(ET.tostring(elem))
        print(df)

我将结果写在一个文件中,并将分支的内容显示为 pandas 的表格,以便更好地阅读。

0赞 balderman 7/8/2023 #3

只需指向元素(使用 xpath)并获取它

import xml.etree.ElementTree as ET


xml = '''<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE POWERMART SYSTEM "powrmart.dtd">
<POWERMART CREATION_DATE="12/27/2018 10:04:04">
   <REPOSITORY NAME="Sample" CODEPAGE="Sample">
      <FOLDER NAME="Sample" DESCRIPTION="This is a folder containing java mapping samples" SHARED="NOTSHARED" OWNER="Administrator" GROUP="Administrators" PERMISSIONS="Sample" UUID="aaaa">
         <SOURCE NAME="Dependent" DBDNAME="Oracle" BUSINESSNAME="" DESCRIPTION="" OBJECTVERSION="1" OWNERNAME="APIUSER" DATABASETYPE="Oracle" VERSIONNUMBER="1">
            <SOURCEFIELD NAME="Title" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="3" SCALE="0" NULLABLE="NOTNULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="3" PHYSICALOFFSET="0" PHYSICALLENGTH="3" FIELDNUMBER="1" FIELDPROPERTY="0" HIDDEN="NO" />
            <SOURCEFIELD NAME="First_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="10" PHYSICALOFFSET="0" PHYSICALLENGTH="10" FIELDNUMBER="2" FIELDPROPERTY="0" HIDDEN="NO" />
            <SOURCEFIELD NAME="Middle_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="6" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="6" PHYSICALOFFSET="0" PHYSICALLENGTH="6" FIELDNUMBER="3" FIELDPROPERTY="0" HIDDEN="NO" />
            <SOURCEFIELD NAME="Last_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="9" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="9" PHYSICALOFFSET="0" PHYSICALLENGTH="9" FIELDNUMBER="4" FIELDPROPERTY="0" HIDDEN="NO" />
            <SOURCEFIELD NAME="Member_ID" BUSINESSNAME="" DESCRIPTION="" DATATYPE="number" KEYTYPE="NOT A KEY" PRECISION="15" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="15" PHYSICALOFFSET="0" PHYSICALLENGTH="15" FIELDNUMBER="5" FIELDPROPERTY="0" HIDDEN="NO" />
            <SOURCEFIELD NAME="Member_Suffix" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="10" PHYSICALOFFSET="0" PHYSICALLENGTH="10" FIELDNUMBER="6" FIELDPROPERTY="0" HIDDEN="NO" />
            <SOURCEFIELD NAME="Birth_Date" BUSINESSNAME="" DESCRIPTION="" DATATYPE="Date" KEYTYPE="NOT A KEY" PRECISION="19" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="19" PHYSICALOFFSET="0" PHYSICALLENGTH="19" FIELDNUMBER="7" FIELDPROPERTY="0" HIDDEN="NO" />
            <SOURCEFIELD NAME="Gender_Code" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="1" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="1" PHYSICALOFFSET="0" PHYSICALLENGTH="1" FIELDNUMBER="8" FIELDPROPERTY="0" HIDDEN="NO" />
            &gt;
         </SOURCE>
         <TARGET NAME="Party" BUSINESSNAME="" DESCRIPTION="" OBJECTVERSION="1" CONSTRAINT="" TABLEOPTIONS="" DATABASETYPE="Oracle" VERSIONNUMBER="1">
            <TARGETFIELD NAME="Title" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="3" SCALE="0" FIELDNUMBER="1" NULLABLE="NULL" PICTURETEXT="" />
            <TARGETFIELD NAME="Gender" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="1" SCALE="0" FIELDNUMBER="2" NULLABLE="NULL" PICTURETEXT="" />
            <TARGETFIELD NAME="First_Name" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" FIELDNUMBER="3" NULLABLE="NULL" PICTURETEXT="" />
            <TARGETFIELD NAME="Middle_Name" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="6" SCALE="0" FIELDNUMBER="4" NULLABLE="NULL" PICTURETEXT="" />
            <TARGETFIELD NAME="Last_Name" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" FIELDNUMBER="5" NULLABLE="NULL" PICTURETEXT="" />
            <TARGETFIELD NAME="Member_Identifier" BUSINESSNAME="" DATATYPE="number" KEYTYPE="NOT A KEY" PRECISION="15" SCALE="0" FIELDNUMBER="6" NULLABLE="NULL" PICTURETEXT="" />
            <TARGETFIELD NAME="Member_Suffix" BUSINESSNAME="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" FIELDNUMBER="7" NULLABLE="NULL" PICTURETEXT="" />
         </TARGET>
         <MAPPING NAME="load_dep_party" DESCRIPTION="" OBJECTVERSION="1" ISVALID="YES" VERSIONNUMBER="1">
            <TRANSFORMATION NAME="SQ_Dependent" DESCRIPTION="" TYPE="Source Qualifier" OBJECTVERSION="1" REUSABLE="NO" VERSIONNUMBER="1">
               <TRANSFORMFIELD NAME="Title" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="3" SCALE="0" PICTURETEXT="" DEFAULTVALUE="" />
               <TRANSFORMFIELD NAME="First_Name" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="10" SCALE="0" PICTURETEXT="" DEFAULTVALUE="" />
               <TRANSFORMFIELD NAME="Middle_Name" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="6" SCALE="0" PICTURETEXT="" DEFAULTVALUE="" />
               <TRANSFORMFIELD NAME="Last_Name" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="9" SCALE="0" PICTURETEXT="" DEFAULTVALUE="" />
               <TRANSFORMFIELD NAME="Member_ID" DESCRIPTION="" DATATYPE="double" PORTTYPE="INPUT/OUTPUT" PRECISION="15" SCALE="0" PICTURETEXT="" DEFAULTVALUE="" />
               <TRANSFORMFIELD NAME="Member_Suffix" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="10" SCALE="0" PICTURETEXT="" DEFAULTVALUE="" />
               <TRANSFORMFIELD NAME="Birth_Date" DESCRIPTION="" DATATYPE="date/time" PORTTYPE="INPUT/OUTPUT" PRECISION="29" SCALE="9" PICTURETEXT="" DEFAULTVALUE="" />
               <TRANSFORMFIELD NAME="Gender_Code" DESCRIPTION="" DATATYPE="string" PORTTYPE="INPUT/OUTPUT" PRECISION="1" SCALE="0" PICTURETEXT="" DEFAULTVALUE="" />
               <TABLEATTRIBUTE NAME="User Defined Join" VALUE="" />
               <TABLEATTRIBUTE NAME="Source Filter" VALUE="" />
               <TABLEATTRIBUTE NAME="Number Of Sorted Ports" VALUE="0" />
               <TABLEATTRIBUTE NAME="Tracing Level" VALUE="Normal" />
            </TRANSFORMATION>
            <INSTANCE NAME="Dependent" DESCRIPTION="" TYPE="SOURCE" TRANSFORMATION_TYPE="Source Definition" TRANSFORMATION_NAME="Dependent" DBDNAME="Oracle" />
            <INSTANCE NAME="SQ_Dependent" DESCRIPTION="" TYPE="TRANSFORMATION" REUSABLE="NO" TRANSFORMATION_TYPE="Source Qualifier" TRANSFORMATION_NAME="SQ_Dependent">
               <ASSOCIATED_SOURCE_INSTANCE NAME="Dependent" />
            </INSTANCE>
            <INSTANCE NAME="Party" DESCRIPTION="" TYPE="TARGET" TRANSFORMATION_TYPE="Target Definition" TRANSFORMATION_NAME="Party" />
            <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Title" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Title" />
            <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="First_Name" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="First_Name" />
            <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Middle_Name" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Middle_Name" />
            <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Last_Name" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Last_Name" />
            <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Member_ID" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Member_ID" />
            <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Member_Suffix" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Member_Suffix" />
            <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Birth_Date" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Birth_Date" />
            <CONNECTOR FROMINSTANCE="Dependent" FROMINSTANCETYPE="Source Definition" FROMFIELD="Gender_Code" TOINSTANCE="SQ_Dependent" TOINSTANCETYPE="Source Qualifier" TOFIELD="Gender_Code" />
         </MAPPING>
         <CONFIG NAME="default_session_config" DESCRIPTION="Default session configuration object" ISDEFAULT="YES" VERSIONNUMBER="1">
            <ATTRIBUTE NAME="Advanced" VALUE="" />
            <ATTRIBUTE NAME="Constraint based load ordering" VALUE="NO" />
            <ATTRIBUTE NAME="Cache LOOKUP() function" VALUE="YES" />
            <ATTRIBUTE NAME="Default buffer block size" VALUE="Auto" />
            <ATTRIBUTE NAME="Line Sequential buffer length" VALUE="1024" />
            <ATTRIBUTE NAME="Maximum Memory Allowed For Auto Memory Attributes" VALUE="0" />
            <ATTRIBUTE NAME="Maximum Percentage of Total Memory Allowed For Auto Memory Attributes" VALUE="5" />
            <ATTRIBUTE NAME="Additional Concurrent Pipelines for Lookup Cache Creation" VALUE="0" />
            <ATTRIBUTE NAME="Custom Properties" VALUE="" />
            <ATTRIBUTE NAME="Pre-build lookup cache" VALUE="Auto" />
            <ATTRIBUTE NAME="Optimization Level" VALUE="Medium" />
            <ATTRIBUTE NAME="DateTime Format String" VALUE="MM/DD/YYYY HH24:MI:SS" />
            <ATTRIBUTE NAME="Pre 85 Timestamp Compatibility" VALUE="YES" />
            <ATTRIBUTE NAME="Log Options" VALUE="0" />
            <ATTRIBUTE NAME="Save session log by" VALUE="Session runs" />
         </CONFIG>
         <WORKFLOW NAME="wf_load_dep_party" DESCRIPTION="workflow description" SERVERNAME="diw_intgs_srvc" SERVER_DOMAINNAME="domaininfa" SCHEDULERNAME="Scheduler" REUSABLE_SCHEDULER="NO" ISVALID="YES" ISENABLED="YES" SUSPEND_ON_ERROR="NO" TASKS_MUST_RUN_ON_SERVER="NO" VERSIONNUMBER="1" ISSERVICE="NO" ISRUNNABLESERVICE="NO">
            <SCHEDULER NAME="Scheduler" DESCRIPTION="" REUSABLE="NO" VERSIONNUMBER="1">
               <SCHEDULEINFO SCHEDULETYPE="ONDEMAND" />
            </SCHEDULER>
            <TASK NAME="Start" DESCRIPTION="" TYPE="Start" REUSABLE="NO" VERSIONNUMBER="1" />
            <SESSION NAME="s_load_dep_party" REUSABLE="NO" ISVALID="YES" MAPPINGNAME="load_dep_party" SORTORDER="Binary" VERSIONNUMBER="1">
               <SESSTRANSFORMATIONINST SINSTANCENAME="Dependent" TRANSFORMATIONNAME="Dependent" TRANSFORMATIONTYPE="Source Definition" PARTITIONTYPE="NONE" ISREPARTITIONPOINT="YES" STAGE="1" PIPELINE="1" />
               <SESSTRANSFORMATIONINST SINSTANCENAME="SQ_Dependent" TRANSFORMATIONNAME="SQ_Dependent" TRANSFORMATIONTYPE="Source Qualifier" PARTITIONTYPE="NONE" ISREPARTITIONPOINT="YES" STAGE="1" PIPELINE="1" />
               <SESSTRANSFORMATIONINST SINSTANCENAME="Party" TRANSFORMATIONNAME="Party" TRANSFORMATIONTYPE="Target Definition" PARTITIONTYPE="NONE" ISREPARTITIONPOINT="YES" STAGE="1" PIPELINE="1" />
               <CONFIGREFERENCE REFOBJECTNAME="default_session_config" TYPE="Session config" />
               <SESSIONEXTENSION NAME="Relational Reader" TYPE="READER" SUBTYPE="Relational Reader" SINSTANCENAME="Dependent" TRANSFORMATIONTYPE="Source Definition" DSQINSTNAME="SQ_Dependent" DSQINSTTYPE="Source Qualifier" />
               <SESSIONEXTENSION NAME="Relational Reader" TYPE="READER" SUBTYPE="Relational Reader" SINSTANCENAME="SQ_Dependent" TRANSFORMATIONTYPE="Source Qualifier">
                  <CONNECTIONREFERENCE CNXREFNAME="DB Connection" CONNECTIONTYPE="Relational" CONNECTIONSUBTYPE="Oracle" CONNECTIONNUMBER="1" CONNECTIONNAME="conn1" VARIABLE="" />
               </SESSIONEXTENSION>
               <SESSIONEXTENSION NAME="Relational Writer" TYPE="WRITER" SUBTYPE="Relational Writer" SINSTANCENAME="Party" TRANSFORMATIONTYPE="Target Definition">
                  <CONNECTIONREFERENCE CNXREFNAME="DB Connection" CONNECTIONTYPE="relational" CONNECTIONSUBTYPE="Oracle" CONNECTIONNUMBER="1" CONNECTIONNAME="conn2" VARIABLE="" />
                  <ATTRIBUTE NAME="Target load type" VALUE="Bulk" />
                  <ATTRIBUTE NAME="Insert" VALUE="YES" />
                  <ATTRIBUTE NAME="Update as Update" VALUE="YES" />
                  <ATTRIBUTE NAME="Update as Insert" VALUE="NO" />
                  <ATTRIBUTE NAME="Update else Insert" VALUE="NO" />
                  <ATTRIBUTE NAME="Delete" VALUE="YES" />
                  <ATTRIBUTE NAME="Truncate target table option" VALUE="NO" />
                  <ATTRIBUTE NAME="Reject file directory" VALUE="$PMBadFileDir\" />
                  <ATTRIBUTE NAME="Reject filename" VALUE="output1.bad" />
               </SESSIONEXTENSION>
               <ATTRIBUTE NAME="General Options" VALUE="" />
               <ATTRIBUTE NAME="Write Backward Compatible Session Log File" VALUE="NO" />
               <ATTRIBUTE NAME="Session Log File Name" VALUE="t_CDB.log" />
               <ATTRIBUTE NAME="Session Log File directory" VALUE="$PMSessionLogDir\" />
               <ATTRIBUTE NAME="Parameter Filename" VALUE="" />
               <ATTRIBUTE NAME="Enable Test Load" VALUE="NO" />
               <ATTRIBUTE NAME="$Source connection value" VALUE="" />
               <ATTRIBUTE NAME="$Target connection value" VALUE="" />
               <ATTRIBUTE NAME="Treat source rows as" VALUE="Insert" />
               <ATTRIBUTE NAME="Allow Temporary View for Pushdown" VALUE="NO" />
               <ATTRIBUTE NAME="Allow Temporary Sequence for Pushdown" VALUE="NO" />
               <ATTRIBUTE NAME="Allow Pushdown for User Incompatible Connections" VALUE="NO" />
            </SESSION>
            <TASKINSTANCE NAME="Start" DESCRIPTION="" TASKTYPE="Start" TASKNAME="Start" ISENABLED="YES" REUSABLE="NO" />
            <TASKINSTANCE NAME="s_load_dep_party" TASKTYPE="Session" TASKNAME="s_load_dep_party" ISENABLED="YES" REUSABLE="NO" TREAT_INPUTLINK_AS_AND="NO" FAIL_PARENT_IF_INSTANCE_FAILS="YES" FAIL_PARENT_IF_INSTANCE_DID_NOT_RUN="YES" />
            <WORKFLOWLINK FROMTASK="Start" TOTASK="s_load_dep_party" CONDITION="" />
            <WORKFLOWVARIABLE NAME="$s_load_dep_party.StartTime" DESCRIPTION="The time this task started" USERDEFINED="NO" DATATYPE="date/time" DEFAULTVALUE="" ISPERSISTENT="NO" ISNULL="NO" />
            <WORKFLOWVARIABLE NAME="$s_load_dep_party.EndTime" DESCRIPTION="The time this task completed" USERDEFINED="NO" DATATYPE="date/time" DEFAULTVALUE="" ISPERSISTENT="NO" ISNULL="NO" />
            <WORKFLOWVARIABLE NAME="$s_load_dep_party.Status" DESCRIPTION="Status of this task&amp;apos;s execution" USERDEFINED="NO" DATATYPE="integer" DEFAULTVALUE="" ISPERSISTENT="NO" ISNULL="NO" />
            <WORKFLOWVARIABLE NAME="$s_load_dep_party.PrevTaskStatus" DESCRIPTION="Status of the previous task that is not disabled" USERDEFINED="NO" DATATYPE="integer" DEFAULTVALUE="" ISPERSISTENT="NO" ISNULL="NO" />
            <ATTRIBUTE NAME="Write Backward Compatible Workflow Log File" VALUE="NO" />
            <ATTRIBUTE NAME="Workflow Log File Name" VALUE="wf_CDB_Transform_Party_Personal_Customer.log" />
            <ATTRIBUTE NAME="Workflow Log File Directory" VALUE="$PMWorkflowLogDir\" />
            <ATTRIBUTE NAME="Save Workflow log by" VALUE="By runs" />
            <ATTRIBUTE NAME="Save workflow log for these runs" VALUE="0" />
            <ATTRIBUTE NAME="Service Name" VALUE="" />
            <ATTRIBUTE NAME="Service Timeout" VALUE="0" />
            <ATTRIBUTE NAME="Is Service Visible" VALUE="NO" />
            <ATTRIBUTE NAME="Is Service Protected" VALUE="NO" />
            <ATTRIBUTE NAME="Fail task after wait time" VALUE="0" />
         </WORKFLOW>
      </FOLDER>
   </REPOSITORY>
</POWERMART>'''


root = ET.fromstring(xml)
src = root.find('.//SOURCE')
ET.dump(src)

输出

<SOURCE NAME="Dependent" DBDNAME="Oracle" BUSINESSNAME="" DESCRIPTION="" OBJECTVERSION="1" OWNERNAME="APIUSER" DATABASETYPE="Oracle" VERSIONNUMBER="1">
            <SOURCEFIELD NAME="Title" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="3" SCALE="0" NULLABLE="NOTNULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="3" PHYSICALOFFSET="0" PHYSICALLENGTH="3" FIELDNUMBER="1" FIELDPROPERTY="0" HIDDEN="NO" />
            <SOURCEFIELD NAME="First_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="10" PHYSICALOFFSET="0" PHYSICALLENGTH="10" FIELDNUMBER="2" FIELDPROPERTY="0" HIDDEN="NO" />
            <SOURCEFIELD NAME="Middle_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="6" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="6" PHYSICALOFFSET="0" PHYSICALLENGTH="6" FIELDNUMBER="3" FIELDPROPERTY="0" HIDDEN="NO" />
            <SOURCEFIELD NAME="Last_Name" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="9" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="9" PHYSICALOFFSET="0" PHYSICALLENGTH="9" FIELDNUMBER="4" FIELDPROPERTY="0" HIDDEN="NO" />
            <SOURCEFIELD NAME="Member_ID" BUSINESSNAME="" DESCRIPTION="" DATATYPE="number" KEYTYPE="NOT A KEY" PRECISION="15" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="15" PHYSICALOFFSET="0" PHYSICALLENGTH="15" FIELDNUMBER="5" FIELDPROPERTY="0" HIDDEN="NO" />
            <SOURCEFIELD NAME="Member_Suffix" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="10" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="10" PHYSICALOFFSET="0" PHYSICALLENGTH="10" FIELDNUMBER="6" FIELDPROPERTY="0" HIDDEN="NO" />
            <SOURCEFIELD NAME="Birth_Date" BUSINESSNAME="" DESCRIPTION="" DATATYPE="Date" KEYTYPE="NOT A KEY" PRECISION="19" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="19" PHYSICALOFFSET="0" PHYSICALLENGTH="19" FIELDNUMBER="7" FIELDPROPERTY="0" HIDDEN="NO" />
            <SOURCEFIELD NAME="Gender_Code" BUSINESSNAME="" DESCRIPTION="" DATATYPE="varchar2" KEYTYPE="NOT A KEY" PRECISION="1" SCALE="0" NULLABLE="NULL" USAGE_FLAGS="" LEVEL="0" FIELDTYPE="ELEMITEM" PICTURETEXT="" OCCURS="0" OFFSET="0" LENGTH="1" PHYSICALOFFSET="0" PHYSICALLENGTH="1" FIELDNUMBER="8" FIELDPROPERTY="0" HIDDEN="NO" />
            &gt;
         </SOURCE>

评论

0赞 Govind Sajeev 7/10/2023
如何查找是否有 2 个带有标签的元素 <source>。使用 .find() 时,它只会返回第一个。尝试使用 findall(),但抛出“AttributeError: 'list' object has no attribute 'iter'”错误
0赞 balderman 7/10/2023
你现在在问另一个问题。我的回答解决了你原来的问题吗?如果是这样 - 请接受它。