> I cannot tell if the above approach will solve your problem or not. Well, declare me a persistent object.
from lxml import etree SS= '{urn:schemas-microsoft-com:office:spreadsheet}' book= etree.Element( 'Workbook' ) book.set( 'xmlns', 'urn:schemas-microsoft-com:office:spreadsheet' ) sheet= etree.SubElement(book, "Worksheet") sheet.set( SS+ 'Name', 'WSheet1' ) table= etree.SubElement(sheet, "Table") row= etree.SubElement(table, "Row") cell1= etree.SubElement(row, "Cell") data1= etree.SubElement(cell1, "Data" ) data1.set( SS+ 'Type', "Number" ) data1.text= '123' cell2= etree.SubElement(row, "Cell") data2= etree.SubElement(cell2, "Data" ) data2.set( SS+ 'Type', "String" ) data2.text= 'abc' out= etree.tostring( book, pretty_print= True, xml_declaration=True ) print( out ) open( 'xl.xml', 'w' ).write( out ) Can you use set( '{ss}Type' ) somehow? And any way to make this look closer to the original? But it works. <?xml version='1.0' encoding='ASCII'?> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"> <Worksheet xmlns:ns0="urn:schemas-microsoft-com:office:spreadsheet" ns0:Name="WSheet1"> <Table> <Row> <Cell> <Data ns0:Type="Number">123</Data> </Cell> <Cell> <Data ns0:Type="String">abc</Data> </Cell> </Row> </Table> </Worksheet> </Workbook> -- http://mail.python.org/mailman/listinfo/python-list