2015-01-30 1 views
0

lxml의 ElementMaker를 사용하여 해당 네스트가있는 Excel 스프레드 시트의 XML 표현을 작성하고자합니다. 내가lxml python의 ElementMaker에있는 여러 요소

<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> 

내 파이썬 코드는 다음

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) 

문제처럼 보인다 싶습니다은 그 내가 할 수있는 유일한 둥지 각 책 안에 하나의 시트와 각 시트 내부에 하나 개의 테이블. 각 책의 여러 시트와 각 시트의 여러 테이블을 허용하도록 코드를 변경하려면 어떻게해야합니까?

답변

0

동일한 루트 아래에서 동일한 태그 이름을 가진 태그를 두 번 두 번째 태그보다 우선적으로 추가 할 수는 없습니다. 그다지 일관성이 없기 때문에 첫 번째 태그보다 우선합니다. 예를 들어 당신이있는 경우 : 루트에 또 다른 "elem1"태그를 추가하려고하면

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

, 그것은 기존보다 우선합니다. 색인 생성 ("elem_0", "elem_1", ​​"elem_2".. 등)을 사용하는 것이 좋습니다.