-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathxml2python.py
84 lines (75 loc) · 3.84 KB
/
xml2python.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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
from typing import List
from xml.dom import minidom
if (__name__) == "__main__":
output_file: str = "pycode4qgis.py"
dataTypes: List[str] = []
header: List[str] = []
file_content: List[str] = []
footer: List[str] = []
dataTypes = ["wms", "wfs", "xyz"]
header.append('# new list of online Web Service sources')
header.append('sources=[]')
header.append('')
file_content.append('# append online Web Service sources')
for dataType in dataTypes:
sourceList = []
file_content.append('# QGIS_%s.xml' % (dataType.upper()))
xmldoc = minidom.parse('QGIS_%s.xml' % (dataType.upper()))
itemList = xmldoc.getElementsByTagName(dataType)
if dataType == "xyz": # Exception dont la resource est nommée dans QGIS_XYZ.xml
itemList = xmldoc.getElementsByTagName(dataType+"tiles")
sourceAttributes = {
"name": "ERROR",
"url": "unknown url",
"referer": "",
"username": "",
"password": "",
"authconfig": "",
"ignoreGetMapURI": "false",
"ignoreAxisOrientation": "false",
"invertAxisOrientation": "false",
"ignoreGetFeatureInfoURI": "false",
"smoothPixmapTransform": "false",
"version": "auto",
"pagingenabled": "",
"maxnumfeatures": "",
"dpiMode": "",
"zmax": "",
"zmin": "",
"tilePixelRatio": "0"
}
for item in itemList:
itemsDetails = []
itemsDetails.append('connections-%s' % dataType)
for key, value in sourceAttributes.items():
try:
itemsDetails.append(item.attributes[key].value)
except:
itemsDetails.append(value)
sourceList.append(itemsDetails)
for source in sourceList:
# [sourcetype, title, authconfig, password, referer, url, username, zmax, zmin]
file_content.append('sources.append(["%s", "%s", "%s", "%s", "%s","%s", "%s", "%s", "%s"])' % (source[0], source[1],
source[6], source[5],
source[3], source[2],
source[4], source[16],
source[17]))
footer = ['', '# Add sources to browser',
'for source in sources:',
' connectionType = source[0]',
' connectionName = source[1]',
' QSettings().setValue("qgis_code/%s/%s/authcfg" % (connectionType, connectionName), source[2])',
' QSettings().setValue("qgis_code/%s/%s/password" % (connectionType, connectionName), source[3])',
' QSettings().setValue("qgis_code/%s/%s/referer" % (connectionType, connectionName), source[4])',
' QSettings().setValue("qgis_code/%s/%s/url" % (connectionType, connectionName), source[5])',
' QSettings().setValue("qgis_code/%s/%s/username" % (connectionType, connectionName), source[6])',
' QSettings().setValue("qgis_code/%s/%s/zmax" % (connectionType, connectionName), source[7])',
' QSettings().setValue("qgis_code/%s/%s/zmin" % (connectionType, connectionName), source[8])',
'',
'# Update GUI',
'iface.reloadConnections()',
'']
with open(output_file, 'w') as out_file:
out_file.write('\n'.join(header) + '\n')
out_file.write('\n'.join(file_content) + '\n')
out_file.write('\n'.join(footer) + '\n')