- Dans `actes-princiers/src/actes_princiers/pipelines/xml_processing/pipeline.py`.
- Ce code commence par importer les fonctions du fichier `nodes.py`. Les `nodes` kedro sont des blocs de la pipeline qui prennent en paramètre des dataset (les XML), font des traitements et renvoient des outputs (un dictionnaire ou un JSON).
- Il y a deux nodes, qui correspondent à chaque point d'entrée :
-`parse_xml_collection`, qui correspond au traitement sur le datacatalog `bourbon` vers le datacatlog `bourbon_xmlcontent`.
- Dans `actes-princiers/src/actes_princiers/pipelines/xml_processing/nodes.py`.
- Ce fichier contient les fonctions qui permettent de traiter les données. Il est appelé dans `pipeline.py`.
-`parse_xml_collection` lit les dataset (= les XML) avec la librairie lxml.
- elle commence par lister les fichiers XML d'un dossier donné (correspondant à une maison princière).
- les xml sont parsés avec lxml.
- la `<div>` du `<body>` est récupérée grâce à la fonction `_xslt` de `actes-princiers/src/actesdataset.py`.
- le résultat est stocké dans un fichier avec l'extension `.pseudoxml` car il ne s'agit pas d'un fichier XML bien formé. Le but est d'envoyer ces "bouts" de XML dans un JSON.
- la fonction retourne un dictionnaire où le nom du fichier est la clef et le pseudoxml la valeur.
- elle commence par lister les fichiers XML d'un dossier donné (correspondant à une maison princière)
- ces fichiers sont parsés avec BeautifulSoup.
- BeautifulSoup recherche les metadonnées dans le XML
- Un dictionnaire est créé avec en clef le nom du fichier et en valeur les métadonnées récupérées par BeautifulSoup.
- quand c'est sérialisé (enregister dans le disque dur) c'est en json
`actesdataset.py`
-----------------
- Dans `actes-princiers/src/actesdataset.py`
- Il s'agit du fichier maître de la pipeline, où sont définies dans classes qui sont ensuite instanciées dans le `node.py`.
les représentations des dataset, qui va chercher les fonctions précédentes
-`_xslt(xsltstylesheet)` : va chercher la partie du XML (`<div>` du `<body>` qui nous intéresse)
-`class XMLDataSet` : classe abstraite qui n'est jamais instanciée = classe mère en héritage dans la classe suivante.
-`class EtreeXMLDataSet` : va chercher les `<div>` contenant les actes et fait un dictionnaire, avec la fonction `parse_xml_collection` dans `nodes.py`
-`class BsXMLDataSet` : va chercher les métadonnées des actes et les met dans un dictionnaire qui est ensuite transformé en json.
-`class DataSetCollection` : collection abstraite de dataset.
-`class XMLDataSetCollection` : construit un dictionnaire (= data set container) dans un attribut dataset qui liste les fichiers xml.
-`class JSONDataSetCollection` : construit un dictionnaire (= data set container) dans un attribut dataset qui liste les fichiers xml.