-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathKeePassXMigratior Script.py
33 lines (24 loc) · 1.23 KB
/
KeePassXMigratior Script.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import sys
import xml.etree.ElementTree
from xml.dom import minidom
def prettify(elem):
"""Return a pretty-printed XML string for the Element.
"""
rough_string = xml.etree.ElementTree.tostring(elem, 'utf-8')
reparsed = minidom.parseString(rough_string)
return reparsed.toprettyxml(indent=" ")
inputFile = sys.argv[1]
db = xml.etree.ElementTree.parse(inputFile).getroot()
outputDb = xml.etree.ElementTree.Element('database')
outputGroup = xml.etree.ElementTree.SubElement(outputDb, 'group')
outputGroupTitle = xml.etree.ElementTree.SubElement(outputGroup, 'title')
outputGroupTitle.text = 'Migration'
for group in db.findall('group'):
for entry in group.findall('entry'):
outputEntry = xml.etree.ElementTree.SubElement(outputGroup, 'entry')
xml.etree.ElementTree.SubElement(outputEntry, 'title').text = entry.find('title').text
xml.etree.ElementTree.SubElement(outputEntry, 'username').text = entry.find('username').text
xml.etree.ElementTree.SubElement(outputEntry, 'password').text = entry.find('password').text
xml.etree.ElementTree.SubElement(outputEntry, 'url').text = entry.find('url').text
xml.etree.ElementTree.SubElement(outputEntry, 'comment').text = entry.find('comment').text
print(prettify(outputDb))