#! /usr/bin/env python import xml.dom.minidom as md import os class Book(): """ Pour les bouquins """ def __init__(self, ): """ Initialisation du bouquins """ self.infos = {"nom":None , "auth":None , "isbn": None} self.dev=[] self.lecon=[] def from_file(self, file): """ Importe les informations depuis un fichier Arguments: - `self`: - `file`: fichier au format xml """ try: self.document=md.parse(file) except: print("Le fichier ", file , " est inconnu") else: self.file = file # Extraction des infos sur le bouquin en question for cle in self.infos.keys(): self.infos[cle] = self.document.getElementsByTagName('lecon')[0].getAttribute(cle) # Extraction des lecons liées for lecon in self.document.getElementsByTagName('lecon'): self.lecon += [lecon.getAttribute("num")] # Extraction des devloppements for dev in self.document.getElementsByTagName('dev'): self.dev += [dev.getAttribute("nom")] # Manque d'extraire la page qui le concerne # print("Ce bouquin est utile dans les leçons ", self.lecon, "et pour les développements", self.dev) def from_scratch(self, book = {"nom":None , "auth":None , "isbn": None}): """ Créé le bouquin depuis rien Arguments: - `self`: - `book`: sous la forme suivante {"nom":val , "auth": val , "isbn": val } """ self.infos = book self.document=md.Document() racine = self.document.createElement("book") for cle in self.infos.keys(): racine.setAttribute(cle, self.infos[cle]) self.document.appendChild(racine) # print(self.document.toprettyxml()) def add_lecon(self, lecon = 0): """ Ajoute une lecon où apparait ce developpement Arguments: - `self`: - `lecon`: le numero de la lecon """ self.lecon += [lecon] element = self.document.createElement("lecon") element.setAttribute("num", str(lecon)) racine = self.document.getElementsByTagName('book')[0] racine.appendChild(element) # print(self.document.toprettyxml()) def add_dev(self, dev = None, pg = None): """ Ajoute une lecon où apparait ce developpement Arguments: - `self`: - `dev`: le nom du developpement - `pg`: page ou on peut le retrouver """ self.dev += [dev] element = self.document.createElement("dev") element.setAttribute("nom", str(dev)) element.setAttribute("pg", str(pg)) racine = self.document.getElementsByTagName('book')[0] racine.appendChild(element) # print(self.document.toprettyxml()) def sauve(self, destination = 0): """ Sauve le developpement à l'endroit indiqué Arguments: - `self`: - `destination`: là où on veut l'enregistrer """ if not destination: destination = self.infos["nom"].replace(" ", "_") + ".agregBook" fichier = open(destination, 'w') fichier.write(self.document.toprettyxml()) fichier.close() print("Le bouquin à été sauvé dans \"" + str(destination) + "\" voila son contenu") print(self.document.toprettyxml()) if __name__ == '__main__': book = Book() # book.from_file("ici") book.from_scratch( {"nom":"super book" , "auth": "super autheur" , "isbn": "super isbn" }) book.add_dev("j'aime les maths et les carottes rapées", 76) book.add_lecon("123") book.sauve()