提问人:Govind Sajeev 提问时间:7/7/2023 更新时间:7/8/2023 访问量:75
如何在python中从XML文件中提取某个部分
How to extract a certain part from XML file in python
问:
下面是一个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&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>
答:
0赞
Zero
7/7/2023
#1
您可以在 python 中解析 XML 文件。BeautifulSoup
lxml
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&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>
>
</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" />
>
</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&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" />
>
</SOURCE>
评论
0赞
Govind Sajeev
7/10/2023
如何查找是否有 2 个带有标签的元素 <source>。使用 .find() 时,它只会返回第一个。尝试使用 findall(),但抛出“AttributeError: 'list' object has no attribute 'iter'”错误
0赞
balderman
7/10/2023
你现在在问另一个问题。我的回答解决了你原来的问题吗?如果是这样 - 请接受它。
评论