2017-04-21 67 views
0

我有这个xmltree迭代器,我解析XML文件后得到的。这个xml文件有一堆xml标签,但我想提取一组特定的标签。我的样本个XML文件看起来像:通过python中的xmltree迭代器迭代时的空输出

<?xml version="1.0"?> 
<?mso-application progid="Excel.Sheet"?> 
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
xmlns:o="urn:schemas-microsoft-com:office:office" 
xmlns:x="urn:schemas-microsoft-com:office:excel" 
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
xmlns:html="http://www.w3.org/TR/REC-html40"> 
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> 
    <Version>16.00</Version> 
</DocumentProperties> 
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"> 
    <AllowPNG/> 
</OfficeDocumentSettings> 
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> 
    <WindowHeight>9888</WindowHeight> 
    <WindowWidth>15360</WindowWidth> 
    <WindowTopX>0</WindowTopX> 
    <WindowTopY>0</WindowTopY> 
    <ProtectStructure>False</ProtectStructure> 
    <ProtectWindows>False</ProtectWindows> 
</ExcelWorkbook> 
<Styles> 
    <Style ss:ID="Default" ss:Name="Normal"> 
    <Alignment ss:Vertical="Bottom"/> 
    <Borders/> 
    <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="m5479808"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="m5479828"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s62"> 
    <Alignment ss:Vertical="Bottom"/> 
    <Borders/> 
    <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s64"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders/> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="12" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s65"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s72"> 
    <Alignment ss:Horizontal="Right" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s73"> 
    <Alignment ss:Horizontal="Left" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s74"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s76"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders/> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s78"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders/> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000" ss:Bold="1"/> 
    <Interior/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s79"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat ss:Format="###0"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s80"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat ss:Format="###0.00"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s81"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat ss:Format="#,##0"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s82"> 
    <Alignment ss:Horizontal="Right" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat ss:Format="###0"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s83"> 
    <Alignment ss:Horizontal="Right" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat ss:Format="###0.00"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s84"> 
    <Alignment ss:Horizontal="Right" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat ss:Format="#,##0"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s85"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat ss:Format="##,##0"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s86"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat ss:Format="####0.00"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s87"> 
    <Alignment ss:Horizontal="Right" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat ss:Format="##,##0"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s88"> 
    <Alignment ss:Horizontal="Right" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat ss:Format="####0.00"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s89"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat ss:Format="@"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s90"> 
    <Alignment ss:Horizontal="Left" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat ss:Format="@"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s91"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat ss:Format="@"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s92"> 
    <Alignment ss:Horizontal="Left" ss:Vertical="Bottom"/> 
    <Borders/> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="12" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s98"> 
    <Alignment ss:Horizontal="Center" ss:Vertical="Bottom"/> 
    <Borders/> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="12" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s99"> 
    <Alignment ss:Horizontal="Right" ss:Vertical="Bottom"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s100"> 
    <Alignment ss:Horizontal="Left" ss:Vertical="Bottom"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat ss:Format="@"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s101"> 
    <Alignment ss:Horizontal="Left" ss:Vertical="Bottom"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s102"> 
    <Alignment ss:Horizontal="Right" ss:Vertical="Bottom"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000" ss:Bold="1"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat ss:Format="@"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s103"> 
    <Alignment ss:Horizontal="Right" ss:Vertical="Bottom"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s104"> 
    <Alignment ss:Horizontal="Left" ss:Vertical="Bottom"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat ss:Format="@"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s105"> 
    <Alignment ss:Horizontal="Left" ss:Vertical="Bottom"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s106"> 
    <Alignment ss:Horizontal="Right" ss:Vertical="Bottom"/> 
    <Borders> 
    <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" 
    ss:Color="#000000"/> 
    </Borders> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior/> 
    <NumberFormat ss:Format="@"/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s108"> 
    <Alignment ss:Horizontal="Left" ss:Vertical="Bottom"/> 
    <Borders/> 
    <Font ss:FontName="Arial, Helvetica" ss:Size="9" ss:Color="#000000"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
    <Style ss:ID="s109"> 
    <Alignment ss:Horizontal="Left" ss:Vertical="Bottom"/> 
    <Borders/> 
    <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> 
    <Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/> 
    <NumberFormat/> 
    <Protection/> 
    </Style> 
</Styles> 
<Worksheet ss:Name="Dataset Contents"> 
    <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="86" x:FullColumns="1" 
    x:FullRows="1" ss:StyleID="s62" ss:DefaultRowHeight="14.4"> 
    <Column ss:StyleID="s62" ss:Width="33.6"/> 
    <Column ss:StyleID="s62" ss:Width="108"/> 
    <Column ss:StyleID="s62" ss:Width="67.8" ss:Span="1"/> 
    <Column ss:Index="5" ss:StyleID="s62" ss:Width="94.8"/> 
    <Column ss:StyleID="s62" ss:Width="229.8"/> 
    <Row ss:AutoFitHeight="0" ss:Height="31.95"> 
    <Cell ss:MergeAcross="5" ss:StyleID="s64"><Data ss:Type="String">Students Score Summary</Data></Cell> 
    </Row> 

    <!--...bunch of <Row><Cell><Data> tags which I don't want to extract..--> 

    <Cell ss:StyleID="s65"><Data ss:Type="String">Variable Name</Data></Cell> 
    <Cell ss:StyleID="s65"><Data ss:Type="String">Variable Label</Data></Cell> 
    <Cell ss:StyleID="s79"><Data ss:Type="String">Minimum&#10;Value</Data></Cell> 
    <Cell ss:StyleID="s79"><Data ss:Type="String">Maximum&#10;Value</Data></Cell> 
    <Cell ss:StyleID="s80"><Data ss:Type="String">Mean&#10;Value</Data></Cell> 

    <Row ss:AutoFitHeight="0" ss:Height="15"> 
    <Cell ss:StyleID="s73"><Data ss:Type="String">Marks</Data></Cell> 
    <Cell ss:StyleID="s73"><Data ss:Type="String">Marks of Student</Data></Cell> 
    <Cell ss:StyleID="s82"><Data ss:Type="Number">0</Data></Cell> 
    <Cell ss:StyleID="s82"><Data ss:Type="Number">96</Data></Cell> 
    <Cell ss:StyleID="s83"><Data ss:Type="Number">65.71</Data></Cell> 
    </Row> 
    <Row ss:AutoFitHeight="0" ss:Height="15"> 
    <Cell ss:StyleID="s73"><Data ss:Type="String">Name</Data></Cell> 
    <Cell ss:StyleID="s73"><Data ss:Type="String">Name of Students</Data></Cell> 
    <Cell ss:StyleID="s82"><Data ss:Type="Number">n/a</Data></Cell> 
    <Cell ss:StyleID="s82"><Data ss:Type="Number">n/a</Data></Cell> 
    <Cell ss:StyleID="s83"><Data ss:Type="Number">n/a</Data></Cell> 
    </Row> 
    . 
    . 
    . 
</Workbook> 

现在我想的是,当标签名称是Marks然后检查下一个标签是Marks of Student。如果是,然后提取/打印这两个标签和接下来的3个标签(这将是最小值,最大值和平均值)。我之前建议的更新后的代码是:

import io 
import xml.etree.ElementTree as ET 
import xml.etree.ElementTree 

tree = xml.etree.ElementTree.parse('xmlFile1.xml').getroot() 
parent_map = {c: p for p in tree.getiterator() for c in p} 

def search_data(first_text, next_text): 
    data_with_marks = [data_node 
         for data_node in tree.findall(".//Data") 
         if data_node.text == first_text] 
    for marks_elem in data_with_marks: 
     cell_elem = parent_map[marks_elem] 
     row_elem = parent_map[cell_elem] 
     cell_nodes = list(row_elem) 
     curr_index = cell_nodes.index(cell_elem) 
     next_index = curr_index + 1 
     next_data_node = next(iter(cell_nodes[next_index])) 
     if next_data_node.text == next_text: 
      return [next(iter(cell_node)) 
        for cell_node in cell_nodes[curr_index:curr_index + 6]] 
    return [] 

if __name__ == '__main__': 
    for node in search_data("Marks", "Marks of Student"): 
     print(node.text) 

当我运行上面的代码时,没有任何东西会被打印出来。执行0返回代码并没有任何内容显示为打印。这段代码有什么问题?

+0

在线演示是否使用'lxml'? –

+0

@LaurentLAPORTE我正在使用'xml.etree.ElementTree' – user2966197

+0

首先,你有一个命名空间前缀'ss',它在你的发布示例中没有声明的地方,因此它不是一个格式良好的XML。上面有''的标签吗?您不能从更大的XML文档中剪切和粘贴。 – Parfait

回答

0

if语句元素比较用字符串:

if next(xmlTree.iter()) == 'Marks of Student': 
    ... 

尝试:

if next(xmlTree.iter()).text == 'Marks of Student': 
    ... 

但是,一个<Data/>元素的下一个元素是<Cell/>元素,而不是下一个<Data/>

编辑

好了,解决的办法是不容易实现,而不全力支持的XPath和良好的API。最好使用lxml

但是,这里是一个实现:

首先,我完成你的XML使其可解析:

content = """\ 
<fragment xmlns:ss="foo"> 
<Cell ss:StyleID="s65"><Data ss:Type="String">Variable Name</Data></Cell> 
<Cell ss:StyleID="s65"><Data ss:Type="String">Variable Label</Data></Cell> 
<Cell ss:StyleID="s79"><Data ss:Type="String">Minimum&#10;Value</Data></Cell> 
<Cell ss:StyleID="s79"><Data ss:Type="String">Maximum&#10;Value</Data></Cell> 
<Cell ss:StyleID="s80"><Data ss:Type="String">Mean&#10;Value</Data></Cell> 

<Row ss:AutoFitHeight="0" ss:Height="15"> 
<Cell ss:StyleID="s73"><Data ss:Type="String">Marks</Data></Cell> 
<Cell ss:StyleID="s73"><Data ss:Type="String">Marks of Student</Data></Cell> 
<Cell ss:StyleID="s82"><Data ss:Type="Number">0</Data></Cell> 
<Cell ss:StyleID="s82"><Data ss:Type="Number">96</Data></Cell> 
<Cell ss:StyleID="s83"><Data ss:Type="Number">65.71</Data></Cell> 
</Row> 
<Row ss:AutoFitHeight="0" ss:Height="15"> 
<Cell ss:StyleID="s73"><Data ss:Type="String">Name</Data></Cell> 
<Cell ss:StyleID="s73"><Data ss:Type="String">Name of Students</Data></Cell> 
<Cell ss:StyleID="s82"><Data ss:Type="Number">n/a</Data></Cell> 
<Cell ss:StyleID="s82"><Data ss:Type="Number">n/a</Data></Cell> 
<Cell ss:StyleID="s83"><Data ss:Type="Number">n/a</Data></Cell> 
</Row> 
</fragment> 
""" 

我解析字符串的内容是这样的:

import io 
import xml.etree.ElementTree as ET 

istream = io.StringIO(content) 
tree = ET.parse(istream) 

这里有亲子关系的诀窍:

parent_map = {c: p for p in tree.getiterator() for c in p} 

连续两个数据,第一个文本是first_text和下一个文本中第一次出现下面的函数搜索next_text

def search_data(first_text, next_text): 
    data_with_marks = [data_node 
         for data_node in tree.findall("//Data") 
         if data_node.text == first_text] 
    for marks_elem in data_with_marks: 
     cell_elem = parent_map[marks_elem] 
     row_elem = parent_map[cell_elem] 
     cell_nodes = list(row_elem) 
     curr_index = cell_nodes.index(cell_elem) 
     next_index = curr_index + 1 
     next_data_node = next(iter(cell_nodes[next_index])) 
     if next_data_node.text == next_text: 
      return [next(iter(cell_node)) 
        for cell_node in cell_nodes[curr_index:curr_index + 6]] 
    return [] 

您可以使用此功能是这样的:

for node in search_data("Marks", "Marks of Student"): 
    print(node.text) 

您得到:

Marks 
Marks of Student 
0 
96 
65.71 

for node in search_data("Name", "Name of Students"): 
    print(node.text) 

你得到:

Name 
Name of Students 
n/a 
n/a 
n/a 

查看repl.it

+0

我试过'if next(xmlTree.iter())。text =='Age of Patient':print('Yes')'但仍然没有输出 – user2966197

+0

此外,如果问题是因为下一个元素是''而不是''那么我怎样才能匹配''的值? – user2966197

+0

我试过更新代码,但我仍然没有打印出任何东西。我已更新我的帖子以反映当前代码 – user2966197