diff --git a/XML_Moodle.py b/XML_Moodle.py new file mode 100755 index 0000000000000000000000000000000000000000..199cd1952b695757b0f73d2f581d1fc3b957ade9 --- /dev/null +++ b/XML_Moodle.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +import xml.etree.ElementTree as ET +from utils import strip_tags, mlang_2_multiling +class Quizz: + def __init__(self, file_name): + self.file_name = file_name + self.tree = ET.parse(self.file_name) + self.questions = [] + self.parse() + + def get_tree(self): + return self.tree + + def parse(self): + questions = self.tree.findall("question") + for q in questions: + if q.attrib["type"] == "category": + c = q.find("category/text").text.replace("$course$/top/","").replace("/",":").replace("::","/") + else: + self.questions.append(Question(q,c)) + + def __str__(self): + res = "" + for q in self.questions: + res += str(q) + return res + +class Question: + def __init__(self,xmlQ,c): + self.q = mlang_2_multiling(strip_tags(xmlQ.find("questiontext/text").text)) + self.category = c + def __str__(self): + return """\\element{"""+self.category+"""}{ + \\begin{questionmult}{Def}\\nbpoints{0,5} + """+self.q+""" + \\begin{choices} + \\correctchoice{L'utilisation d'un traitement de texte en cours de langue.}\bareme{b=0.25} + \\correctchoice{L'évaluation de l'interface d'un concordancier en vue de son utilisation en classe d'anglais.}\bareme{b=0.15} + \\correctchoice{L'utilisation d'un glossaire en ligne sur l'informatique en cours de FLE.}\bareme{b=0.15} + \\wrongchoice{L'utilisation d'un dictionnaire en cours d'anglais.}\bareme{b=0,m=-0.25} + \\wrongchoice{La création d'un glossaire en ligne sur l'informatique.}\bareme{b=0} + \\end{choices} + \\explain{La création d'un lexique ne relève pas intrinsèquement de l'ALAO, encore faut-il que son usage soit lié à l'apprentissage d'une langue.} + \\end{questionmult} +}\n\n""" + +if __name__ == "__main__": + quizz = Quizz("quiz-GI-4-SID-S1-top-20201204-1620.xml") + print(quizz) diff --git a/utils.py b/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..0c927f320040ee6094175bbecaf7abb7fcaebe96 --- /dev/null +++ b/utils.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 +from re import compile,sub + +def remove_moodle_cdata(txt): + return txt.replace("<![CDATA[","").replace("]]>","") + +def strip_tags(txt): + return sub(compile('<.*?>'), '',remove_moodle_cdata(txt)) + +def mlang_2_multiling(txt): + return sub(r"\{mlang en\}(.*?)\{mlang\}\{mlang other\}(.*?)\{mlang\}", r"\\multiling{\2}{\1}",txt)