lxml python中ElementMaker中的多个元素

时间:2015-01-30 20:00:38

标签: python xml lxml

我希望在lxml中使用ElementMaker来构建具有相应嵌套的excel电子表格的xml表示。我想

<excelbook>
  workbook info
  <excelsheet>
      <sheetname>Sheet1</sheetname>
      <exceltable>
        <numrows>10</numrows>
        <numcols>13</numcols>
      </exceltable>
      <exceltable>
        <numrows>10</numrows>
        <numcols>13</numcols>
      </exceltable>
    </excelsheet>
    <excelsheet>
      <sheetname>Sheet2</sheetname>
      <exceltable>
        <numrows>10</numrows>
        <numcols>13</numcols>
      </exceltable>
      <exceltable>
        <numrows>10</numrows>
        <numcols>13</numcols>
      </exceltable>
  </excelsheet>
</excelbook>

我的python代码如下所示

    for excelSheet in excelBook.excelSheets:

        for excelTable in excelSheet.excelTables:

            exceltable = E.exceltable(
                E.num_rows(str(excelTable.num_rows)),   
                E.num_cols(str(excelTable.num_cols)),
                )

        excelsheet = E.excelsheet(
                exceltable,
                E.sheetname(excelSheet.sheetName),
                )

        excelbook = E.excelbook(
        excelsheet,
        E.bookname(fullpathname),
        E.numSheets(str(excelBook.numSheets))) 

        root = E.XML(excelbook)

问题是我只能在每本书中嵌套一张纸,在每张纸内嵌一张桌子。如何更改代码以允许每本书中的多个工作表和每个工作表中的多个表格。

1 个答案:

答案 0 :(得分:0)

你不能在同一个根下面两次使用相同标签名称的标签,并期望它们一个接一个地附加,而不是第二个覆盖第一个,因为这不是很连贯。 例如,如果你有:

<root>
    <elem1>some text 1</elem1>
</root>

如果你试图追加另一个&#34; elem1&#34;标记为root,它将覆盖现有的标记。 我建议您使用索引(&#34; elem_0&#34;,&#34; elem_1&#34;,&#34; elem_2&#34; ..等)。