2017-04-21 5 views
0

xmlファイルを解析した後に得られるこのxmltreeイテレータがあります。このxmlファイルにはxmlタグがたくさんありますが、特定のタグセットを順番に抽出したいと思います。私のサンプルXMLSファイルは次のようになります。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あるかどうかを確認する場合今、私が欲しいものです。そうすると、これらの2つのタグと次の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

repl.itのオンラインデモを参照してくださいあなたは '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/>

EDIT

まあ、解決策は、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 2つの連続したデータの最初の出現のために次の関数を検索:

for node in search_data("Marks", "Marks of Student"): 
    print(node.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 [] 

あなたはこのように、この機能を使用することができます

あなたは:

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 

+0

私は 'if next(xmlTree.iter())。text == 'Age of Patient':print( 'Yes')'出力 – user2966197

+0

また、次の要素が ''の値と一致するように ''ではなく ''である場合に問題が発生していますか? – user2966197

+0

私は更新コードを試しましたが、まだ何も印刷されていません。私は現在のコードを反映するために自分の投稿を更新しました – user2966197

関連する問題