Here is the complete HTML translated into French, with the language set to `fr`, the FR link marked as active, and the title updated with `[FR]`. ```html #755 : XmlHelper [FR]
EN · DE · RU · FR · ES

#755 : XmlHelper.java

projectforge-business/src/main/java/org/projectforge/framework/xmlstream/XmlHelper.java Classe utilitaire Java — Pont d'analyse et de formatage XML. 135 lignes. Utilise dom4j. Source : projectforge-business/src/main/java/org/projectforge/framework/xmlstream/XmlHelper.java 135 lignes · 97 code · 28 commentaires · 10 vides
Objectif : Une classe utilitaire pour les opérations XML — conversion de chaînes en éléments dom4j, d'éléments en chaînes, et formatage. 135 lignes. Utilise dom4j pour l'analyse/sérialisation du XML standard (pas XStream, pas W3C DOM). C'est la troisième bibliothèque XML du projet, aux côtés de XStream (préférences utilisateur) et de l'API W3C DOM (SVG via Batik). La constante XML_HEADER = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" — l'en-tête XML standard utilisé lors de la génération de fichiers d'exportation XML. L'encodage est codé en dur en UTF-8 — une décision au niveau du code, pas une configuration.

Méthodes

replaceQuotes(String xml) — normalisation des guillemets

Remplace les guillemets simples (') par des guillemets doubles (") dans les chaînes XML. Javadoc : "Ceci est utile pour écrire des constantes de chaîne XML, par exemple dans des cas de test." Dans les littéraux de chaîne Java, les guillemets simples pour les attributs évitent l'échappement, mais le XML valide nécessite des guillemets doubles. Cette méthode permet un code de test comme : XmlHelper.replaceQuotes("<node name='test'/>")"<node name=\"test\"/>".

fromString(String str) — chaîne → élément dom4j

Analyse une chaîne XML en un Element dom4j. Utilise DocumentHelper.parseText(). Renvoie l'élément racine (document.getRootElement()). En cas d'erreur d'analyse, journalise et renvoie null (ne lève pas d'exception — l'appelant doit vérifier la nullité). Pour les chaînes vides/blanches, renvoie null.

toString(Element el, boolean prettyFormat) — élément dom4j → chaîne XML formatée

Sérialise un Element dom4j en une chaîne. Utilise XMLWriter de dom4j avec OutputFormat. Quand prettyFormat=true : active les sauts de ligne et une indentation de 2 espaces. Important : writer.close() est appelé pour vider le tampon.

toString(org.w3c.dom.Document, boolean prettyFormat) — Document W3C DOM → chaîne

Fonctionne avec un type XML différentorg.w3c.dom.Document (utilisé par SVG/Batik). Utilise javax.xml.transform.Transformer (processeur XSLT). Avec prettyFormat=true : ajoute INDENT=yes et indent-amount=2 spécifique à Xalan. Toutes les erreurs sont encapsulées dans InternalErrorException (contrairement à la méthode dom4j qui journalise et renvoie null) — car les erreurs de transformation W3C DOM sont considérées comme des erreurs internes critiques.

Deux bibliothèques XML dans une seule classe — Dette architecturale

Avoir des méthodes pour deux représentations XML différentes (dom4j et W3C DOM) dans une seule classe est un artefact historique. dom4j est utilisé pour XmlStream (sérialisation de données), W3C DOM pour le rendu SVG (Batik). Ils ont fini dans la même classe utilitaire parce que le "travail XML" était perçu comme une seule responsabilité, bien qu'ils servent des sous-systèmes différents. Un remaniement approprié extrairait la méthode W3C dans un SvgXmlHelper ou l'intégrerait dans BatikImageRenderer.

Historique Git

868d6abb7 2025 → 2026 (mise à jour de l'année de copyright)
63081666f En-têtes de fichiers source : 2024→2025
b6092df09 Copyright 2023 → 2024
ab45d51fa Copyright 2001-2022 → 2001-2023
5f7ef41b8 Copyright 2021 → 2022
cd27dd997 package xstream → xmlstream
ceb63e8a1 En-tête de code source : (C) 2001-2021
7c79f1922 Copyright de l'en-tête source → 2020
32f634b88 Optimiser les imports
000ca723d Supprimer les expressions booléennes inutiles (business)
dd5ca38ac Copyright de tous les en-têtes de fichiers Java mis à jour ou créés
a5bbdca6a Changer le logger pour slf4j
f979e8a42 MGC-UPDATE : Mise à jour vers la version 3.0.0-SNAPSHOT
9ebb88522 Commit initial
Changement notable : a5bbdca6a a basculé le logger d'une implémentation propriétaire vers SLF4J — faisant partie d'une standardisation de la journalisation à l'échelle du projet. 000ca723d a supprimé les expressions booléennes inutiles (par exemple, == true ou les vérifications de nullité redondantes) lors d'une passe de nettoyage du code. f979e8a42 était un changement de version majeur de 2.x à 3.0.0-SNAPSHOT.