This repository has been archived by the owner on Oct 21, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgala-csv2xml.py
66 lines (54 loc) · 2.46 KB
/
gala-csv2xml.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
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# gala-csv2xml.py
# DB - 20160429
# Source et inspiration : http://code.activestate.com/recipes/578384-convert-csv-to-xml/
# Première ligne du fichier csv doit être une entête! Référez-vous au fichier CalendrierConservationExemple.csv.
import csv
import datetime
import uuid
import sys
from lxml import etree
csvFile = 'CalendrierConservation.csv' #Format : une ligne par règle de conservation.
xmlFile = 'CalendrierConservationGala.xml' #Le fichier à importer dans GALA.
csvData = csv.reader(open(csvFile))
xmlData = open(xmlFile, 'w')
#Ici, on commence à écrire notre fichier xml. SVP conserver les commentaires dans votre fichier xml..
xmlData.write("<?xml version='1.0' encoding='UTF-8'?>" + "\n")
xmlData.write("<!-- Fichier créé avec gala-csv2xml de HB archivistes, s.e.n.c. -->" + "\n")
xmlData.write("<!-- Contacter dominic.boisvert@hbarchivistes.qc.ca pour plus d'informations. -->" + "\n")
xmlData.write("<!-- Fichier généré le " + str(datetime.datetime.now()).split('.')[0] + " -->" + "\n")
xmlData.write("<!-- UUID " + str(uuid.uuid1()) + " -->" + "\n")
# there must be only one top-level tag
xmlData.write('<ROWSET>' + "\n")
rowNum = 0
for row in csvData:
if rowNum == 0:
tags = row
else:
xmlData.write('<ROW>' + "\n")
for i in range(0,17):
xmlData.write(' ' + '<' + tags[i] + '>' \
+ row[i] + '</' + tags[i] + '>' + "\n")
#Permet d'écrire la section DELAI_ROW pour l'exemplaire principal.
xmlData.write(' <DELAI>' + "\n")
xmlData.write(' <DELAI_ROW>' + "\n")
for princ in range(18,27):
xmlData.write(' ' + ' <' + tags[princ] + '>' \
+ row[princ] + '</' + tags[princ] + '>' + "\n")
xmlData.write(' </DELAI_ROW>' + "\n")
xmlData.write(' </DELAI>' + "\n")
#Permet d'écrire la section DELAI_ROW pour l'exemplaire secondaire.
xmlData.write(' <DELAI>' + "\n")
xmlData.write(' <DELAI_ROW>' + "\n")
for sec in range(28,38):
xmlData.write(' ' + ' <' + tags[sec] + '>' \
+ row[sec] + '</' + tags[sec] + '>' + "\n")
xmlData.write(' </DELAI_ROW>' + "\n")
xmlData.write(' </DELAI>' + "\n")
xmlData.write('</ROW>' + "\n")
rowNum +=1
xmlData.write('</ROWSET>' + "\n")
#Test pour enlever les nodes vides.
#À développer.
xmlData.close()