Bonjour/Bonsoir,
Voila, ca fait un moment que je me tatte pour essayer de faire du xml avec ruby et donc pas plus tard qu'aujourd'hui j'ai commencer à m'y mettre. Naturelement (ou pas) j'ai commencer par essayer d'en écrire un, voici comment je fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 require 'rexml/document' include REXML class Savexml def initialize(filename, directory) @filename = filename @directory = directory @doc = nil end def writexml( somethingtowrite, user ,userid) @doc = Document.new() @doc.add_element("bibliography", {"id" => userid}) @doc.root.add_element("biblioentry") biblioentry = @doc.root.elements[1] current_serie = -1 serie = nil somethingtowrite.each { |c| if current_serie != c[:id_serie] current_serie = c[:id_serie] serie = Element.new("serie") serie.add_element("idserie") serie.elements["idserie"].text = c[:id_serie] serie.add_element("tome",{"id" => c[:id_tome]}) serie.elements["tome"].text = c[:status] #serie.elements << tomes biblioentry.elements << serie else last = serie.add_element("tome",{"id" => c[:id_tome]}) last.text = c[:status] end } end def printxml puts @doc end def savexml #@file = File.new(@filename, "w+") #@file.write(@doc) @file = File.new(@filename,"w+") @doc.write( @file) end def resetxml end def destroy end def close @file.close() end end somethingtowrite = [ {:id_serie => 1, :id_tome => 1 , :status => "inside"}, {:id_serie => 1, :id_tome => 2 , :status => "inside"}, {:id_serie => 1, :id_tome => 3 , :status => "inside"}, {:id_serie => 1, :id_tome => 4 , :status => "inside"}, {:id_serie => 1, :id_tome => 5 , :status => "inside"}, {:id_serie => 1, :id_tome => 6 , :status => "inside"}, {:id_serie => 1, :id_tome => 7 , :status => "inside"}, {:id_serie => 1, :id_tome => 8 , :status => "inside"}, {:id_serie => 1, :id_tome => 9 , :status => "inside"}, {:id_serie => 2, :id_tome => 1 , :status => "inside"}, {:id_serie => 2, :id_tome => 2 , :status => "inside"}, {:id_serie => 2, :id_tome => 3 , :status => "inside"}, {:id_serie => 2, :id_tome => 4 , :status => "inside"}, {:id_serie => 2, :id_tome => 5 , :status => "inside"}, # {:id_serie => 2, :id_tome => 6 , :status => "inside"}, => tome 6 manquant {:id_serie => 2, :id_tome => 7 , :status => "inside"}, {:id_serie => 2, :id_tome => 8 , :status => "inside"}, {:id_serie => 2, :id_tome => 9 , :status => "inside"}, ] myxml = Savexml.new("fabseven",".") myxml.writexml( somethingtowrite, "fabseven" ,7) myxml.printxml() myxml.savexml() myxml.close()
Voila, j'ai mon fichier fabseven (sans extention) avec mon xml dedans maisssss....voici ce qui me dérange :
- j'ai pas le fameux xml version = 1.0 , comment le rajouter au début ? nécessaire ou pas ?
- Tout mon xml est en une ligne (la première de mon fichier fabseven) et donc il est illisible pour un humain normal.
Voila donc pour le xml version c'est pas trop grave mais pour la lisibilité du xml ca me gène beaucoup plus, y aurait-il une méthode simple pour avoir un xml lisible ? (avec des sauts de ligne et indentations)
Merci d'avance
ps : histoire que ca soit plus clair voici mon fichier en ce moment et ce que je voudrais avoir :
En ce moment :
Ce que je voudrais avoir :<bibliography id='7'><biblioentry><serie><idserie>1</idserie><tome id='1'>inside</tome><tome id='2'>inside</tome><tome id='3'>inside</tome><tome id='4'>inside</tome><tome id='5'>inside</tome><tome id='6'>inside</tome><tome id='7'>inside</tome><tome id='8'>inside</tome><tome id='9'>inside</tome></serie><serie><idserie>2</idserie><tome id='1'>inside</tome><tome id='2'>inside</tome><tome id='3'>inside</tome><tome id='4'>inside</tome><tome id='5'>inside</tome><tome id='7'>inside</tome><tome id='8'>inside</tome><tome id='9'>inside</tome></serie></biblioentry></bibliography>
Dans les deux cas on voit que la personne d'id 7 possède plusieurs volumes de deux séries différente mais je pense que vous voyez bien que le second exemple est bien plus lisible<bibliography id='7'>
<biblioentry>
<serie>
<idserie>1</idserie>
<tome id='1'>inside</tome>
<tome id='2'>inside</tome>
<tome id='3'>inside</tome>
<tome id='4'>inside</tome>
<tome id='5'>inside</tome>
<tome id='6'>inside</tome>
<tome id='7'>inside</tome>
<tome id='8'>inside</tome>
<tome id='9'>inside</tome>
</serie>
<serie>
<idserie>2</idserie>
<tome id='1'>inside</tome>
<tome id='2'>inside</tome>
<tome id='3'>inside</tome>
<tome id='4'>inside</tome>
<tome id='5'>inside</tome>
<tome id='7'>inside</tome>
<tome id='8'>inside</tome>
<tome id='9'>inside</tome>
</serie>
</biblioentry>
</bibliography>
Partager