Nachfolgend für alle, die ein ähnliches Anliegen haben, die in Python dafür gebastelte Notlösung - zum Wiederverwenden, Verbessern oder kommentieren, ganz wie ihr wollt. Auch als meine zwar sehr bescheidene, aber von Herzen kommende Willkommensgabe für dieses neue Forum, das sicher nicht nur ich sehnlichst erwartet habe - gestern noch hatte ich den Codeschnipsel ersatzweise noch auf linuxquestions.org abgelegt...
Code: Alles auswählen
#-*- coding: utf-8 -*-
import os, sys, zipfile, xml.dom.minidom
##########################################################
# Script to export LibreOffice Auto Correct Entries
# into a flat file (e.g. to reuse some of them with autokey)
##########################################################
ACEfile='.libreoffice/3/user/autocorr/acor_de-DE.dat' # This is a ZIP where LibreOffice stores its auto correct entries
ifname='DocumentList.xml' # Name of the file inside the ZIP archive that contains auto correct entries
ofname='AutoCorrectEntries.csv' # any desired output file name for the export
tagname= 'block-list:block' # (as in DocumentList.xml)
schema=['block-list:abbreviated-name','block-list:name'] # (as in DocumentList.xml)
default_encoding='UTF-8' # (as in DocumentList.xml)
ofdelimiter=";" # any desired delimiter for export
##########################################################
of = open(ofname,"w")
oACE = zipfile.ZipFile(os.path.join(os.path.expanduser("~"), ACEfile))
zif = oACE.open(ifname, "r") # access as read-only ZipExtFile object
doctree = xml.dom.minidom.parse(zif) # Parse the input file as DOM (document object model, xml-tree) into memory
if doctree.encoding:
encoding = doctree.encoding
else:
encoding = default_encoding
for elem in doctree.getElementsByTagName(tagname):
acEntry=[]
for fieldname in schema:
acEntry.append(elem.getAttribute(fieldname))
of.write(ofdelimiter.join(acEntry).encode(encoding)+"\n")
of.close() # Close output file
doctree.unlink # and deallocate DOM object