如何使用 lxml 或漂亮的汤来分析和获取以下值



我正在尝试提取xml中工件的过滤器信息,但最终我没有得到我无法处理的无类型问题。 你能在这里帮我吗? 我尝试解析的以下XML文件如下

<?xml version="1.0" encoding="UTF-8"?>
<Calculation:scenario xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Calculation="http://www.sap.com/ndb/BiModelCalculation.ecore" schemaVersion="2.3" id="CV_CUBE_RESOURCE_LIVETRACK" applyPrivilegeType="ANALYTIC_PRIVILEGE" checkAnalyticPrivileges="true" defaultClient="$$client$$" defaultLanguage="$$language$$" hierarchiesSQLEnabled="false" translationRelevant="true" visibility="reportingEnabled" calculationScenarioType="TREE_BASED" dataCategory="CUBE" enforceSqlExecution="false" executionSemantic="UNDEFINED" outputViewType="Aggregation">
<descriptions defaultDescription="CV_CUBE_RESOURCE_LIVETRACK"/>
<localVariables/>
<variableMappings/>
<informationModelLayout relativeWidthScenario="52"/>
<dataSources>
<DataSource id="Strans.DDL::Ztrans_TBL.CordinatorAvailablity" type="DATA_BASE_TABLE">
<viewAttributes allViewAttributes="true"/>
<columnObject schemaName="Ztrans" columnObjectName="Strans.DDL::Ztrans_TBL.CordinatorAvailablity"/>
</DataSource>
<DataSource id="CV_CUBE_SCHEDULE_OFFERING" type="CALCULATION_VIEW">
<viewAttributes allViewAttributes="true"/>
<resourceUri>/Strans.CalculationViews/calculationviews/CV_CUBE_SCHEDULE_OFFERING</resourceUri>
</DataSource>
<DataSource id="CV_CUBE_CORDINATORS_RATED_ALL" type="CALCULATION_VIEW">
<viewAttributes allViewAttributes="true"/>
<resourceUri>/Strans.CalculationViews/calculationviews/CV_CUBE_CORDINATORS_RATED_ALL</resourceUri>
</DataSource>
</dataSources>
<calculationViews>
<calculationView xsi:type="Calculation:ProjectionView" id="Projection_1" filterExpressionLanguage="COLUMN_ENGINE">
<descriptions/>
<viewAttributes>
<viewAttribute id="CurrentOffering"/>
<viewAttribute id="CordinatorID"/>
<viewAttribute id="NextAvailableDate"/>
<viewAttribute id="TrackerID"/>
</viewAttributes>
<calculatedViewAttributes/>
<input node="#Strans.DDL::Ztrans_TBL.CordinatorAvailablity">
<mapping xsi:type="Calculation:AttributeMapping" target="CurrentOffering" source="CurrentOffering"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorID" source="CordinatorID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="NextAvailableDate" source="NextAvailableDate"/>
<mapping xsi:type="Calculation:AttributeMapping" target="TrackerID" source="TrackerID"/>
</input>
<filter>&quot;CurrentOffering&quot; = '11111'</filter>
</calculationView>
<calculationView xsi:type="Calculation:ProjectionView" id="Projection_2" filterExpressionLanguage="COLUMN_ENGINE">
<descriptions/>
<viewAttributes>
<viewAttribute id="ScheduledOfferingID"/>
<viewAttribute id="DueDate"/>
<viewAttribute id="ItemType"/>
<viewAttribute id="EmailAddress"/>
</viewAttributes>
<calculatedViewAttributes/>
<input node="#CV_CUBE_SCHEDULE_OFFERING">
<mapping xsi:type="Calculation:AttributeMapping" target="ScheduledOfferingID" source="ScheduledOfferingID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="DueDate" source="DueDate"/>
<mapping xsi:type="Calculation:AttributeMapping" target="ItemType" source="ItemType"/>
<mapping xsi:type="Calculation:AttributeMapping" target="EmailAddress" source="EmailAddress"/>
</input>
<filter>&quot;ScheduledOfferingID&quot;='000111'</filter>
</calculationView>
<calculationView xsi:type="Calculation:JoinView" id="Join_1" joinType="inner">
<descriptions/>
<viewAttributes>
<viewAttribute id="CurrentOffering"/>
<viewAttribute id="CordinatorID"/>
<viewAttribute id="NextAvailableDate"/>
<viewAttribute id="TrackerID"/>
<viewAttribute id="ScheduledOfferingID"/>
<viewAttribute id="DueDate"/>
<viewAttribute id="ItemType"/>
<viewAttribute id="EmailAddress"/>
</viewAttributes>
<calculatedViewAttributes/>
<input node="#Projection_1">
<mapping xsi:type="Calculation:AttributeMapping" target="CurrentOffering" source="CurrentOffering"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorID" source="CordinatorID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="NextAvailableDate" source="NextAvailableDate"/>
<mapping xsi:type="Calculation:AttributeMapping" target="TrackerID" source="TrackerID"/>
</input>
<input node="#Projection_2">
<mapping xsi:type="Calculation:AttributeMapping" target="ScheduledOfferingID" source="ScheduledOfferingID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="DueDate" source="DueDate"/>
<mapping xsi:type="Calculation:AttributeMapping" target="ItemType" source="ItemType"/>
<mapping xsi:type="Calculation:AttributeMapping" target="EmailAddress" source="EmailAddress"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CurrentOffering" source="ScheduledOfferingID"/>
</input>
<joinAttribute name="CurrentOffering"/>
</calculationView>
<calculationView xsi:type="Calculation:ProjectionView" id="Projection_3" filterExpressionLanguage="COLUMN_ENGINE">
<descriptions/>
<viewAttributes>
<viewAttribute id="Status"/>
<viewAttribute id="TaskCoordinatorID"/>
<viewAttribute id="OrganizationRating"/>
<viewAttribute id="CordinatorExperienceInYear"/>
<viewAttribute id="CordinatorName"/>
</viewAttributes>
<calculatedViewAttributes/>
<input node="#CV_CUBE_CORDINATORS_RATED_ALL">
<mapping xsi:type="Calculation:AttributeMapping" target="Status" source="Status"/>
<mapping xsi:type="Calculation:AttributeMapping" target="TaskCoordinatorID" source="TaskCoordinatorID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="OrganizationRating" source="OrganizationRating"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorExperienceInYear" source="CordinatorExperienceInYear"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorName" source="CordinatorName"/>
</input>
<filter>&quot;Status&quot; = '0001'</filter>
</calculationView>
<calculationView xsi:type="Calculation:JoinView" id="Join_2" joinType="fullOuter">
<descriptions/>
<viewAttributes>
<viewAttribute id="Status"/>
<viewAttribute id="TaskCoordinatorID"/>
<viewAttribute id="OrganizationRating"/>
<viewAttribute id="CordinatorExperienceInYear"/>
<viewAttribute id="CordinatorName"/>
<viewAttribute id="CurrentOffering"/>
<viewAttribute id="CordinatorID"/>
<viewAttribute id="NextAvailableDate"/>
<viewAttribute id="TrackerID"/>
<viewAttribute id="ScheduledOfferingID"/>
<viewAttribute id="DueDate"/>
<viewAttribute id="ItemType"/>
<viewAttribute id="EmailAddress"/>
</viewAttributes>
<calculatedViewAttributes/>
<input node="#Join_1">
<mapping xsi:type="Calculation:AttributeMapping" target="CurrentOffering" source="CurrentOffering"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorID" source="CordinatorID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="NextAvailableDate" source="NextAvailableDate"/>
<mapping xsi:type="Calculation:AttributeMapping" target="TrackerID" source="TrackerID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="ScheduledOfferingID" source="ScheduledOfferingID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="DueDate" source="DueDate"/>
<mapping xsi:type="Calculation:AttributeMapping" target="ItemType" source="ItemType"/>
<mapping xsi:type="Calculation:AttributeMapping" target="EmailAddress" source="EmailAddress"/>
</input>
<input node="#Projection_3">
<mapping xsi:type="Calculation:AttributeMapping" target="Status" source="Status"/>
<mapping xsi:type="Calculation:AttributeMapping" target="TaskCoordinatorID" source="TaskCoordinatorID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="OrganizationRating" source="OrganizationRating"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorExperienceInYear" source="CordinatorExperienceInYear"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorName" source="CordinatorName"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorID" source="TaskCoordinatorID"/>
</input>
<joinAttribute name="CordinatorID"/>
</calculationView>
</calculationViews>
<logicalModel id="Join_2">
<descriptions/>
<attributes>
<attribute id="Status" order="1" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="Status"/>
<keyMapping columnObjectName="Join_2" columnName="Status"/>
</attribute>
<attribute id="TaskCoordinatorID" order="2" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="TaskCoordinatorID"/>
<keyMapping columnObjectName="Join_2" columnName="TaskCoordinatorID"/>
</attribute>
<attribute id="CordinatorName" order="5" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="CordinatorName"/>
<keyMapping columnObjectName="Join_2" columnName="CordinatorName"/>
</attribute>
<attribute id="CurrentOffering" order="6" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="CurrentOffering"/>
<keyMapping columnObjectName="Join_2" columnName="CurrentOffering"/>
</attribute>
<attribute id="CordinatorID" order="7" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="CordinatorID"/>
<keyMapping columnObjectName="Join_2" columnName="CordinatorID"/>
</attribute>
<attribute id="NextAvailableDate" order="8" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="NextAvailableDate"/>
<keyMapping columnObjectName="Join_2" columnName="NextAvailableDate"/>
</attribute>
<attribute id="TrackerID" order="9" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="TrackerID"/>
<keyMapping columnObjectName="Join_2" columnName="TrackerID"/>
</attribute>
<attribute id="ScheduledOfferingID" order="10" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="ScheduledOfferingID"/>
<keyMapping columnObjectName="Join_2" columnName="ScheduledOfferingID"/>
</attribute>
<attribute id="DueDate" order="11" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="DueDate"/>
<keyMapping columnObjectName="Join_2" columnName="DueDate"/>
</attribute>
<attribute id="ItemType" order="12" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="ItemType"/>
<keyMapping columnObjectName="Join_2" columnName="ItemType"/>
</attribute>
<attribute id="EmailAddress" order="13" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="EmailAddress"/>
<keyMapping columnObjectName="Join_2" columnName="EmailAddress"/>
</attribute>
</attributes>
<calculatedAttributes/>
<privateDataFoundation>
<tableProxies/>
<joins/>
<layout>
<shapes/>
</layout>
</privateDataFoundation>
<baseMeasures>
<measure id="OrganizationRating" order="3" aggregationType="sum" measureType="simple">
<descriptions defaultDescription="OrganizationRating"/>
<measureMapping columnObjectName="Join_2" columnName="OrganizationRating"/>
</measure>
<measure id="CordinatorExperienceInYear" order="4" aggregationType="sum" measureType="simple">
<descriptions defaultDescription="CordinatorExperienceInYear"/>
<measureMapping columnObjectName="Join_2" columnName="CordinatorExperienceInYear"/>
</measure>
</baseMeasures>
<calculatedMeasures>
<measure id="Flag" hidden="false" order="14" aggregationType="sum" measureType="simple" datatype="INTEGER" expressionLanguage="COLUMN_ENGINE">
<descriptions defaultDescription="Flag"/>
<formula>IF((date(now())&gt; &quot;DueDate&quot; and &quot;Status&quot; = 'Occupied' ) ,-1,1)</formula>
</measure>
</calculatedMeasures>
<restrictedMeasures/>
<localDimensions/>
</logicalModel>
<layout>
<shapes>
<shape expanded="true" modelObjectName="Output" modelObjectNameSpace="MeasureGroup">
<upperLeftCorner x="50" y="40"/>
<rectangleSize height="0" width="0"/>
</shape>
<shape expanded="true" modelObjectName="Projection_1" modelObjectNameSpace="CalculationView">
<upperLeftCorner x="10" y="290"/>
<rectangleSize height="-1" width="-1"/>
</shape>
<shape expanded="true" modelObjectName="Projection_2" modelObjectNameSpace="CalculationView">
<upperLeftCorner x="149" y="290"/>
<rectangleSize height="-1" width="-1"/>
</shape>
<shape expanded="true" modelObjectName="Join_1" modelObjectNameSpace="CalculationView">
<upperLeftCorner x="30" y="210"/>
<rectangleSize height="-1" width="-1"/>
</shape>
<shape expanded="true" modelObjectName="Projection_3" modelObjectNameSpace="CalculationView">
<upperLeftCorner x="260" y="240"/>
<rectangleSize height="-1" width="-1"/>
</shape>
<shape expanded="true" modelObjectName="Join_2" modelObjectNameSpace="CalculationView">
<upperLeftCorner x="149" y="127"/>
<rectangleSize height="-1" width="-1"/>
</shape></shapes>
</layout>
</Calculation:scenario>

我使用的python方法是

def filters():
for child in root:
for filters in root.iter('calculationView'):
#print((filters.tag ,filters.attrib['id'] , filters.find("filter").text  ))
dfdata1= (filters.tag ,filters.attrib['id'] , filters.find("filter").text  )
#print(dfdata1)
filt.append(str(dfdata1))

Fup_Rem = pd.DataFrame(filt).astype(str).drop_duplicates()
print(Fup_Rem,"FUP")
#print(Fup_Rem.values)
#df = pd.DataFrame(re.sub('rn+',' ',Fup_Rem.values))
#dfo_csv.t('out.csv',index='False')
#df.savetxt(r'c:datanp.txt', df.values, fmt='%d')
#df.to_csv("damnboss", sep='t', encoding='utf-8')
return Fup_Rem

请提出解决方案。 我得到的错误是

**Printing Filters ========>
Traceback (most recent call last):
File "badmambos.py", line 88, in <module>
filters = filters()
File "badmambos.py", line 67, in filters
dfdata1= (filters.tag ,filters.attrib['id'] , filters.find("filter").text  )
AttributeError: 'NoneType' object has no attribute 'text'**

预期结果为标签,属性,'11111' 标签,属性,000111" ... 多谢。 加布里埃尔

你的一些<calculationView>没有<filter>所以你得到了None,你试图得到None.text,你得到你的错误。

您应该filters.find("filter")并检查它是否未None,然后再尝试.text


最少的工作代码:

text = '''<Calculation:scenario xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Calculation="http://www.sap.com/ndb/BiModelCalculation.ecore" schemaVersion="2.3" id="CV_CUBE_RESOURCE_LIVETRACK" applyPrivilegeType="ANALYTIC_PRIVILEGE" checkAnalyticPrivileges="true" defaultClient="$$client$$" defaultLanguage="$$language$$" hierarchiesSQLEnabled="false" translationRelevant="true" visibility="reportingEnabled" calculationScenarioType="TREE_BASED" dataCategory="CUBE" enforceSqlExecution="false" executionSemantic="UNDEFINED" outputViewType="Aggregation">
<descriptions defaultDescription="CV_CUBE_RESOURCE_LIVETRACK"/>
<localVariables/>
<variableMappings/>
<informationModelLayout relativeWidthScenario="52"/>
<dataSources>
<DataSource id="Strans.DDL::Ztrans_TBL.CordinatorAvailablity" type="DATA_BASE_TABLE">
<viewAttributes allViewAttributes="true"/>
<columnObject schemaName="Ztrans" columnObjectName="Strans.DDL::Ztrans_TBL.CordinatorAvailablity"/>
</DataSource>
<DataSource id="CV_CUBE_SCHEDULE_OFFERING" type="CALCULATION_VIEW">
<viewAttributes allViewAttributes="true"/>
<resourceUri>/Strans.CalculationViews/calculationviews/CV_CUBE_SCHEDULE_OFFERING</resourceUri>
</DataSource>
<DataSource id="CV_CUBE_CORDINATORS_RATED_ALL" type="CALCULATION_VIEW">
<viewAttributes allViewAttributes="true"/>
<resourceUri>/Strans.CalculationViews/calculationviews/CV_CUBE_CORDINATORS_RATED_ALL</resourceUri>
</DataSource>
</dataSources>
<calculationViews>
<calculationView xsi:type="Calculation:ProjectionView" id="Projection_1" filterExpressionLanguage="COLUMN_ENGINE">
<descriptions/>
<viewAttributes>
<viewAttribute id="CurrentOffering"/>
<viewAttribute id="CordinatorID"/>
<viewAttribute id="NextAvailableDate"/>
<viewAttribute id="TrackerID"/>
</viewAttributes>
<calculatedViewAttributes/>
<input node="#Strans.DDL::Ztrans_TBL.CordinatorAvailablity">
<mapping xsi:type="Calculation:AttributeMapping" target="CurrentOffering" source="CurrentOffering"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorID" source="CordinatorID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="NextAvailableDate" source="NextAvailableDate"/>
<mapping xsi:type="Calculation:AttributeMapping" target="TrackerID" source="TrackerID"/>
</input>
<filter>&quot;CurrentOffering&quot; = '11111'</filter>
</calculationView>
<calculationView xsi:type="Calculation:ProjectionView" id="Projection_2" filterExpressionLanguage="COLUMN_ENGINE">
<descriptions/>
<viewAttributes>
<viewAttribute id="ScheduledOfferingID"/>
<viewAttribute id="DueDate"/>
<viewAttribute id="ItemType"/>
<viewAttribute id="EmailAddress"/>
</viewAttributes>
<calculatedViewAttributes/>
<input node="#CV_CUBE_SCHEDULE_OFFERING">
<mapping xsi:type="Calculation:AttributeMapping" target="ScheduledOfferingID" source="ScheduledOfferingID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="DueDate" source="DueDate"/>
<mapping xsi:type="Calculation:AttributeMapping" target="ItemType" source="ItemType"/>
<mapping xsi:type="Calculation:AttributeMapping" target="EmailAddress" source="EmailAddress"/>
</input>
<filter>&quot;ScheduledOfferingID&quot;='000111'</filter>
</calculationView>
<calculationView xsi:type="Calculation:JoinView" id="Join_1" joinType="inner">
<descriptions/>
<viewAttributes>
<viewAttribute id="CurrentOffering"/>
<viewAttribute id="CordinatorID"/>
<viewAttribute id="NextAvailableDate"/>
<viewAttribute id="TrackerID"/>
<viewAttribute id="ScheduledOfferingID"/>
<viewAttribute id="DueDate"/>
<viewAttribute id="ItemType"/>
<viewAttribute id="EmailAddress"/>
</viewAttributes>
<calculatedViewAttributes/>
<input node="#Projection_1">
<mapping xsi:type="Calculation:AttributeMapping" target="CurrentOffering" source="CurrentOffering"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorID" source="CordinatorID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="NextAvailableDate" source="NextAvailableDate"/>
<mapping xsi:type="Calculation:AttributeMapping" target="TrackerID" source="TrackerID"/>
</input>
<input node="#Projection_2">
<mapping xsi:type="Calculation:AttributeMapping" target="ScheduledOfferingID" source="ScheduledOfferingID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="DueDate" source="DueDate"/>
<mapping xsi:type="Calculation:AttributeMapping" target="ItemType" source="ItemType"/>
<mapping xsi:type="Calculation:AttributeMapping" target="EmailAddress" source="EmailAddress"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CurrentOffering" source="ScheduledOfferingID"/>
</input>
<joinAttribute name="CurrentOffering"/>
</calculationView>
<calculationView xsi:type="Calculation:ProjectionView" id="Projection_3" filterExpressionLanguage="COLUMN_ENGINE">
<descriptions/>
<viewAttributes>
<viewAttribute id="Status"/>
<viewAttribute id="TaskCoordinatorID"/>
<viewAttribute id="OrganizationRating"/>
<viewAttribute id="CordinatorExperienceInYear"/>
<viewAttribute id="CordinatorName"/>
</viewAttributes>
<calculatedViewAttributes/>
<input node="#CV_CUBE_CORDINATORS_RATED_ALL">
<mapping xsi:type="Calculation:AttributeMapping" target="Status" source="Status"/>
<mapping xsi:type="Calculation:AttributeMapping" target="TaskCoordinatorID" source="TaskCoordinatorID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="OrganizationRating" source="OrganizationRating"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorExperienceInYear" source="CordinatorExperienceInYear"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorName" source="CordinatorName"/>
</input>
<filter>&quot;Status&quot; = '0001'</filter>
</calculationView>
<calculationView xsi:type="Calculation:JoinView" id="Join_2" joinType="fullOuter">
<descriptions/>
<viewAttributes>
<viewAttribute id="Status"/>
<viewAttribute id="TaskCoordinatorID"/>
<viewAttribute id="OrganizationRating"/>
<viewAttribute id="CordinatorExperienceInYear"/>
<viewAttribute id="CordinatorName"/>
<viewAttribute id="CurrentOffering"/>
<viewAttribute id="CordinatorID"/>
<viewAttribute id="NextAvailableDate"/>
<viewAttribute id="TrackerID"/>
<viewAttribute id="ScheduledOfferingID"/>
<viewAttribute id="DueDate"/>
<viewAttribute id="ItemType"/>
<viewAttribute id="EmailAddress"/>
</viewAttributes>
<calculatedViewAttributes/>
<input node="#Join_1">
<mapping xsi:type="Calculation:AttributeMapping" target="CurrentOffering" source="CurrentOffering"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorID" source="CordinatorID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="NextAvailableDate" source="NextAvailableDate"/>
<mapping xsi:type="Calculation:AttributeMapping" target="TrackerID" source="TrackerID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="ScheduledOfferingID" source="ScheduledOfferingID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="DueDate" source="DueDate"/>
<mapping xsi:type="Calculation:AttributeMapping" target="ItemType" source="ItemType"/>
<mapping xsi:type="Calculation:AttributeMapping" target="EmailAddress" source="EmailAddress"/>
</input>
<input node="#Projection_3">
<mapping xsi:type="Calculation:AttributeMapping" target="Status" source="Status"/>
<mapping xsi:type="Calculation:AttributeMapping" target="TaskCoordinatorID" source="TaskCoordinatorID"/>
<mapping xsi:type="Calculation:AttributeMapping" target="OrganizationRating" source="OrganizationRating"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorExperienceInYear" source="CordinatorExperienceInYear"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorName" source="CordinatorName"/>
<mapping xsi:type="Calculation:AttributeMapping" target="CordinatorID" source="TaskCoordinatorID"/>
</input>
<joinAttribute name="CordinatorID"/>
</calculationView>
</calculationViews>
<logicalModel id="Join_2">
<descriptions/>
<attributes>
<attribute id="Status" order="1" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="Status"/>
<keyMapping columnObjectName="Join_2" columnName="Status"/>
</attribute>
<attribute id="TaskCoordinatorID" order="2" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="TaskCoordinatorID"/>
<keyMapping columnObjectName="Join_2" columnName="TaskCoordinatorID"/>
</attribute>
<attribute id="CordinatorName" order="5" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="CordinatorName"/>
<keyMapping columnObjectName="Join_2" columnName="CordinatorName"/>
</attribute>
<attribute id="CurrentOffering" order="6" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="CurrentOffering"/>
<keyMapping columnObjectName="Join_2" columnName="CurrentOffering"/>
</attribute>
<attribute id="CordinatorID" order="7" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="CordinatorID"/>
<keyMapping columnObjectName="Join_2" columnName="CordinatorID"/>
</attribute>
<attribute id="NextAvailableDate" order="8" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="NextAvailableDate"/>
<keyMapping columnObjectName="Join_2" columnName="NextAvailableDate"/>
</attribute>
<attribute id="TrackerID" order="9" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="TrackerID"/>
<keyMapping columnObjectName="Join_2" columnName="TrackerID"/>
</attribute>
<attribute id="ScheduledOfferingID" order="10" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="ScheduledOfferingID"/>
<keyMapping columnObjectName="Join_2" columnName="ScheduledOfferingID"/>
</attribute>
<attribute id="DueDate" order="11" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="DueDate"/>
<keyMapping columnObjectName="Join_2" columnName="DueDate"/>
</attribute>
<attribute id="ItemType" order="12" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="ItemType"/>
<keyMapping columnObjectName="Join_2" columnName="ItemType"/>
</attribute>
<attribute id="EmailAddress" order="13" attributeHierarchyActive="false" displayAttribute="false">
<descriptions defaultDescription="EmailAddress"/>
<keyMapping columnObjectName="Join_2" columnName="EmailAddress"/>
</attribute>
</attributes>
<calculatedAttributes/>
<privateDataFoundation>
<tableProxies/>
<joins/>
<layout>
<shapes/>
</layout>
</privateDataFoundation>
<baseMeasures>
<measure id="OrganizationRating" order="3" aggregationType="sum" measureType="simple">
<descriptions defaultDescription="OrganizationRating"/>
<measureMapping columnObjectName="Join_2" columnName="OrganizationRating"/>
</measure>
<measure id="CordinatorExperienceInYear" order="4" aggregationType="sum" measureType="simple">
<descriptions defaultDescription="CordinatorExperienceInYear"/>
<measureMapping columnObjectName="Join_2" columnName="CordinatorExperienceInYear"/>
</measure>
</baseMeasures>
<calculatedMeasures>
<measure id="Flag" hidden="false" order="14" aggregationType="sum" measureType="simple" datatype="INTEGER" expressionLanguage="COLUMN_ENGINE">
<descriptions defaultDescription="Flag"/>
<formula>IF((date(now())&gt; &quot;DueDate&quot; and &quot;Status&quot; = 'Occupied' ) ,-1,1)</formula>
</measure>
</calculatedMeasures>
<restrictedMeasures/>
<localDimensions/>
</logicalModel>
<layout>
<shapes>
<shape expanded="true" modelObjectName="Output" modelObjectNameSpace="MeasureGroup">
<upperLeftCorner x="50" y="40"/>
<rectangleSize height="0" width="0"/>
</shape>
<shape expanded="true" modelObjectName="Projection_1" modelObjectNameSpace="CalculationView">
<upperLeftCorner x="10" y="290"/>
<rectangleSize height="-1" width="-1"/>
</shape>
<shape expanded="true" modelObjectName="Projection_2" modelObjectNameSpace="CalculationView">
<upperLeftCorner x="149" y="290"/>
<rectangleSize height="-1" width="-1"/>
</shape>
<shape expanded="true" modelObjectName="Join_1" modelObjectNameSpace="CalculationView">
<upperLeftCorner x="30" y="210"/>
<rectangleSize height="-1" width="-1"/>
</shape>
<shape expanded="true" modelObjectName="Projection_3" modelObjectNameSpace="CalculationView">
<upperLeftCorner x="260" y="240"/>
<rectangleSize height="-1" width="-1"/>
</shape>
<shape expanded="true" modelObjectName="Join_2" modelObjectNameSpace="CalculationView">
<upperLeftCorner x="149" y="127"/>
<rectangleSize height="-1" width="-1"/>
</shape></shapes>
</layout>
</Calculation:scenario>'''
import lxml.html
soup = lxml.html.fromstring(text)
root = soup.find('calculationviews')
for filters in root.iter('calculationview'):
f = filters.find("filter")
if f is not None:
print(filters.tag, filters.attrib['id'], f.text)
else:
print(filters.tag, filters.attrib['id'], "NO FILTER")

结果:

calculationview Projection_1 "CurrentOffering" = '11111'
calculationview Projection_2 "ScheduledOfferingID"='000111'
calculationview Join_1 NO FILTER
calculationview Projection_3 "Status" = '0001'
calculationview Join_2 NO FILTER

这表明<calculationview id="Join_1">没有<filter>

最新更新