And dont forget that you can use triple quotes to get rid of all the quote-escaping you are using:
$ python >>> """ ... <elem attr="hi"> ... ho ... </elem> ... """ '\n<elem attr="hi">\nho\n</elem>\n' >>> Craig wrote: > John Machin wrote: > > > Craig wrote: > > > > > Great. Got that sorted. The problem I have now is that some of the > > > XML data is not copied across to the file when I have the text > > > information included. The number of characters that is lost is equal > > > to the number of characters that is in the block of text I entered > > > before. The code I am using is: > > > > > > def WriteXMLRecord ( record, XMLFileBaseName, root): > > > RecordName = SubElement(root, "Log") > > > #iterate through all the fields in the record > > > for key in record: > > > # write the key and its data > > > test = SubElement(RecordName, key) > > > test.text = str(record[key]) > > > tree = ElementTree(root) > > > tree.write(XMLFileBaseName) > > > > I'm guessing, based on reading the docs for the write method, that you > > should be using the file handle, rather than the file name, if the file > > is already opened. So (1) change the name of the 2nd arg to > > XMLFileHandle or somesuch, and in the caller, use outFile (the handle) > > instead of "record.xml". > > > > > > > > def main(): > > > outFile = open("record.xml", 'w') > > > outFile.write("""<?xml version=\"1.0\"?> > > > <?xml-stylesheet type=\"text/xsl\" href=\"test.xsl\"?> > > > <!DOCTYPE BobActivityLog SYSTEM \"test.dtd\">\n\n""") > > > > > > root = Element("Log") > > > WriteXMLRecord(data1, "record.xml", root) > > > WriteXMLRecord(data2, "record.xml", root) > > > WriteXMLRecord(data3, "record.xml", root) > > > outFile.close() > > > > > HTH, > > John > > Great. Got it. Thanks so much for all your help. > > > Craig -- http://mail.python.org/mailman/listinfo/python-list