Ajouter des éléments dans un texte
Bonjour,
Plutôt que de faire un long discours, voici un exemple concret de ce que je cherche à faire avec QtXml et notamment la méthode DOM.
Note: je viens de PyQt, peut être que la syntaxe que je vais employer n'est pas la même qu'en Qt, mais ça ne devrait pas poser trop de souci en théorie
Soit la chaîne de caractères suivante :
Citation:
Bonjour, toto ceci est le début de la chaîne tata et là la fin titi de celle ci.
J'ai créé une petite fonction permettant de sortir une liste de la forme suivante :
Code:
["Bonjour, ","toto"," ceci est le début de la chaîne ", "tata", " et là la fin ", "titi"," de celle ci."]
.
J'ai en fait coupé ma chaîne en plusieurs parties.
Le but étant au final de créer un sous élement XML de cette forme :
Code:
1 2
|
<txt>Bonjour, <txt2>toto</txt2> ceci est le début de la chaîne <txt2>tata</txt2> et là la fin <txt2>titi</txt2> de celle ci.</txt> |
Au moment d'écrire ces quelques lignes, le mieux que j'ai pu faire c'est ça
Code:
1 2 3 4
|
<txt>Bonjour, <txt2>toto</txt2></txt>
<txt>ceci est le début de la chaîne <txt2>tata</txt2></txt>
<txt>et là la fin <txt2>titi</txt2> de celle ci.</txt> |
Via ce morceau de code (désolé, c'est du python)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
def bodydivXml_txt(self, balise, txt):
if balise == "txt":
self.bodydiv_description = self.doc.createElement(balise)
self.bodydiv.appendChild(self.bodydiv_description) ##self.bodydiv étant le sous élément parent
txtDescription = self.doc.createTextNode(txt)
self.bodydiv_description.appendChild(txtDescription)
else:
self.bodydiv_autre = self.doc.createElement(balise)
self.bodydiv_description.appendChild(self.bodydiv_autre)
txtDescription = self.doc.createTextNode(txt)
self.bodydiv_autre.appendChild(txtDescription) |
Quelqu'un a-t-il déjà eu à traiter ce genre de problème, ou quelqu'un aurait il une piste, car là je bloque un peu.
D'avance merci à tous, et encore désolé pour le code en Python
[EDIT]
Et bien voila, après un bon repas, un petit café tout devient plus facile. Plutôt que de chercher à passer les différents éléments de ma liste à la fonction bodydivXml_txt, je lui passe la liste entière et fait le traitement ensuite. Tout simplement.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
def bodydivXml_txt(self, balise, liste):
self.bodydiv_txt = self.doc.createElement(balise)
self.bodydiv.appendChild(self.bodydiv_txt)
if len(liste) != 0:
for i in liste:
if i[0] == "txt":
txtDescription = self.doc.createTextNode(i[3])
self.bodydiv_txt.appendChild(txtDescription)
else:
self.bodydiv_autre = self.doc.createElement(i[0])
self.bodydiv_txt.appendChild(self.bodydiv_autre)
txtAutre = self.doc.createTextNode(i[3])
self.bodydiv_autre.appendChild(txtAutre) |