Как разобрать и получить следующие значения, используя l xml или красивый суп - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь извлечь информацию о фильтре из артефакта в 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('\r\n+',' ',Fup_Rem.values))

    #dfo_csv.t('out.csv',index='False')
    #df.savetxt(r'c:\data\np.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'**

Ожидаемый результат: тег , attrib, тег '11111', attrib, '000111' ... Большое спасибо. Gabriel

1 Ответ

1 голос
/ 11 февраля 2020

Некоторые из ваших <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>

...