BODParser¶
BODParser
¶
Analyseur générique pour documents XML BOD Infor M3.
Convertit des structures XML hiérarchiques en format CSV à plat selon une configuration de mapping.
Initialise l'analyseur BOD.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
namespace
|
Optional[str]
|
Namespace XML. Par défaut, utilise le namespace Infor OAGIS. |
None
|
Source code in cmpparis/bod_parser.py
| Python | |
|---|---|
Functions¶
parse_xml_string
¶
Analyse une chaîne XML et renvoie l'élément racine.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
xml_string
|
str
|
Contenu XML sous forme de chaîne. |
required |
Returns:
| Type | Description |
|---|---|
Element
|
xml.etree.ElementTree.Element: Élément racine du document XML. |
Raises:
| Type | Description |
|---|---|
ParseError
|
Si la chaîne n'est pas un XML valide. |
Source code in cmpparis/bod_parser.py
parse_xml_file
¶
extract_field
¶
Extrait la valeur d'un champ depuis un élément XML via XPath.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
element
|
Element
|
Élément XML dans lequel chercher. |
required |
xpath
|
str
|
Expression XPath. |
required |
default
|
str
|
Valeur par défaut si non trouvée. |
''
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
str
|
Valeur trouvée, ou |
Source code in cmpparis/bod_parser.py
extract_attribute
¶
Extrait la valeur d'un attribut depuis un élément XML.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
element
|
Element
|
Élément XML dans lequel chercher. |
required |
xpath
|
str
|
XPath pointant vers l'élément. |
required |
attr
|
str
|
Nom de l'attribut. |
required |
default
|
str
|
Valeur par défaut si non trouvée. |
''
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
str
|
Valeur de l'attribut, ou |
Source code in cmpparis/bod_parser.py
extract_multiple
¶
Extrait plusieurs éléments correspondant à un XPath.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
element
|
Element
|
Élément XML dans lequel chercher. |
required |
xpath
|
str
|
Expression XPath. |
required |
Returns:
| Type | Description |
|---|---|
List[Element]
|
List[xml.etree.ElementTree.Element]: Liste des éléments correspondants. |
Source code in cmpparis/bod_parser.py
flatten_element
¶
flatten_element(element: Element, mapping: Dict[str, Any], transformers: Optional[Dict[str, Callable]] = None) -> Dict[str, str]
Aplati un élément XML en dictionnaire selon une configuration de mapping.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
element
|
Element
|
Élément XML à aplatir. |
required |
mapping
|
Dict[str, Any]
|
Définition des correspondances champs CSV → XPath.
- Format simple: |
required |
transformers
|
Optional[Dict[str, Callable]]
|
Transformateurs optionnels par colonne.
- Format: |
None
|
Returns:
| Type | Description |
|---|---|
Dict[str, str]
|
Dict[str, str]: Dictionnaire aplati. |
Source code in cmpparis/bod_parser.py
parse_header_lines_structure
¶
parse_header_lines_structure(root: Element, header_xpath: str, lines_xpath: str, header_mapping: Dict[str, Any], line_mapping: Dict[str, Any], header_transformers: Optional[Dict[str, Callable]] = None, line_transformers: Optional[Dict[str, Callable]] = None, flatten_mode: str = 'duplicate_header') -> List[Dict[str, str]]
Analyse une structure XML de type En-tête + Lignes (courant dans les BOD).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
root
|
Element
|
Élément racine XML. |
required |
header_xpath
|
str
|
XPath vers l'élément d'en-tête. |
required |
lines_xpath
|
str
|
XPath vers les éléments ligne (relatif à l'en-tête). |
required |
header_mapping
|
Dict[str, Any]
|
Mapping des champs d'en-tête. |
required |
line_mapping
|
Dict[str, Any]
|
Mapping des champs de ligne. |
required |
header_transformers
|
Optional[Dict[str, Callable]]
|
Transformateurs pour l'en-tête. |
None
|
line_transformers
|
Optional[Dict[str, Callable]]
|
Transformateurs pour les lignes. |
None
|
flatten_mode
|
str
|
Mode d'aplatissement:
- |
'duplicate_header'
|
Returns:
| Type | Description |
|---|---|
List[Dict[str, str]]
|
List[Dict[str, str]]: Liste de dictionnaires aplatis (un par ligne). |
Source code in cmpparis/bod_parser.py
to_csv
¶
Convertit une liste de dictionnaires en chaîne CSV.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
List[Dict[str, str]]
|
Liste de lignes (dictionnaires). |
required |
fieldnames
|
Optional[List[str]]
|
Liste des colonnes (l'ordre compte). Si |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
str
|
Contenu CSV (délimiteur |
Source code in cmpparis/bod_parser.py
parse_and_convert
¶
parse_and_convert(xml_content: str, config: BODConfig, output_csv_path: Optional[str] = None) -> str
Pipeline complète: analyser un BOD XML et convertir en CSV.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
xml_content
|
str
|
Chaîne XML complète ou chemin vers un fichier XML. |
required |
config
|
BODConfig
|
Configuration de mapping BOD. |
required |
output_csv_path
|
Optional[str]
|
Chemin optionnel pour écrire le CSV. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
str |
str
|
Chaîne CSV générée. |
Examples:
| Python Console Session | |
|---|---|