from typing import List

from lxml import etree

if __name__ == "__main__":
    # Balise principale
    base = etree.Element("FastDMU", {"version": "2.0"})
    # Balise Search system
    root = etree.Element("SearchSystem")
    # Deux champs pour Search System
    root_title = etree.Element("Title")
    root_mode = etree.Element("Mode")
    root_title.text = "01"
    root_mode.text = "AssembliesOnly"
    root.append(root_title)
    root.append(root_mode)

    # Liste des items à ajouter
    items: List[str] = ["A", "B", "C"]
    for item in items:
        # Création des éléments
        search_item = etree.Element("SearchItem")
        item_mode = etree.Element("Mode")
        item_type = etree.Element("Type")
        item_value = etree.Element("Value")
        item_field = etree.Element("Field")
        item_field_name = etree.Element("FieldName")
        item_title = etree.Element("Title")
        # Définition du texte
        item_mode.text = "Add"
        item_type.text = "Wildcard"
        item_value.text = item
        item_field.text = "PARTNUMBER"
        item_field_name.text = "PARTNUMBER"
        item_title.text = "Partnumber"
        # Ajout des éléments au parent
        search_item.append(item_mode)
        search_item.append(item_type)
        search_item.append(item_value)
        search_item.append(item_field)
        search_item.append(item_field_name)
        search_item.append(item_title)
        # Ajout du searchitem à la balise SearchSystem
        root.append(search_item)
    # Ajout de la balise SearchSystem à la balise FastDMU
    base.append(root)
    # J'aurais peut-être préféré faire ça avec BeautifulSoup4
    # Ou peut-être gagner du temps en convertissant du texte directement
    # en éléments XML.
    print(etree.tostring(base, pretty_print=True, xml_declaration=True, encoding="iso8859-1",
                         doctype="<!DOCTYPE FastDMU>"))
