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

#755: XmlHelper.java

projectforge-business/src/main/java/org/projectforge/framework/xmlstream/XmlHelper.java Java-Hilfsklasse — Brücke für XML-Parsing und -Formatierung. 135 Zeilen. Verwendet dom4j. Quelle: projectforge-business/src/main/java/org/projectforge/framework/xmlstream/XmlHelper.java 135 Zeilen · 97 Code · 28 Kommentare · 10 leer
Zweck: Eine Hilfsklasse für XML-Operationen – Konvertierung von Zeichenketten in dom4j-Elemente, Elemente zurück in Zeichenketten und Formatierung. 135 Zeilen. Verwendet dom4j zum Parsen/Serialisieren von normalem XML (nicht XStream, nicht W3C DOM). Dies ist die dritte XML-Bibliothek im Projekt neben XStream (Benutzereinstellungen) und der W3C-DOM-API (SVG über Batik). Die Konstante XML_HEADER = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" – der standardmäßige XML-Header, der beim Erzeugen von XML-Exportdateien verwendet wird. Die Kodierung ist fest als UTF-8 codiert – eine Entscheidung auf Codeebene, keine Konfiguration.

Methoden

replaceQuotes(String xml) – Anführungszeichen-Normalisierung

Ersetzt einfache Anführungszeichen (') durch doppelte Anführungszeichen (") in XML-Zeichenketten. Javadoc: "Dies ist nützlich zum Schreiben von XML-Zeichenkettenkonstanten, z. B. in Testfällen." In Java-String-Literalen vermeiden einfache Anführungszeichen für Attribute das Escapen, aber gültiges XML erfordert doppelte Anführungszeichen. Diese Methode ermöglicht Testcode wie: XmlHelper.replaceQuotes("<node name='test'/>")"<node name=\"test\"/>".

fromString(String str) – Zeichenkette → dom4j-Element

Parst eine XML-Zeichenkette in ein dom4j-Element. Verwendet DocumentHelper.parseText(). Gibt das Wurzelelement zurück (document.getRootElement()). Bei einem Parsing-Fehler wird protokolliert und null zurückgegeben (es wird keine Ausnahme geworfen – der Aufrufer muss auf null prüfen). Bei leeren/leerzeichenlosen Zeichenketten wird null zurückgegeben.

toString(Element el, boolean prettyFormat) – dom4j-Element → formatierte XML-Zeichenkette

Serialisiert ein dom4j-Element zurück in eine Zeichenkette. Verwendet dom4js XMLWriter mit OutputFormat. Wenn prettyFormat=true: aktiviert Zeilenumbrüche und Einrückung mit 2 Leerzeichen. Wichtig: writer.close() wird aufgerufen, um den Puffer zu leeren.

toString(org.w3c.dom.Document, boolean prettyFormat) – W3C-DOM-Dokument → Zeichenkette

Arbeitet mit einem anderen XML-Typorg.w3c.dom.Document (verwendet von SVG/Batik). Verwendet javax.xml.transform.Transformer (XSLT-Prozessor). Mit prettyFormat=true: fügt INDENT=yes und Xalan-spezifisches indent-amount=2 hinzu. Alle Fehler werden in InternalErrorException verpackt (anders als die dom4j-Methode, die protokolliert und null zurückgibt) – weil W3C-DOM-Transformationsfehler als kritische interne Fehler betrachtet werden.

Zwei XML-Bibliotheken in einer Klasse – Architekturschuld

Methoden für zwei verschiedene XML-Repräsentationen (dom4j und W3C DOM) in einer Klasse zu haben, ist ein historisches Artefakt. dom4j wird für XmlStream (Datenserialisierung) verwendet, W3C DOM für die SVG-Rendering (Batik). Sie landeten in derselben Hilfsklasse, weil „XML-Arbeit" als eine Verantwortung wahrgenommen wurde, obwohl sie unterschiedlichen Subsystemen dienen. Eine ordentliche Refaktorisierung würde die W3C-Methode in einen SvgXmlHelper extrahieren oder direkt in BatikImageRenderer einbetten.

Git-Verlauf

868d6abb7 2025 → 2026 (Aktualisierung des Copyright-Jahres)
63081666f Quellcode-Dateiköpfe: 2024→2025
b6092df09 Copyright 2023 → 2024
ab45d51fa Copyright 2001-2022 → 2001-2023
5f7ef41b8 Copyright 2021 → 2022
cd27dd997 Paket xstream → xmlstream
ceb63e8a1 Quellcode-Kopfzeile: (C) 2001-2021
7c79f1922 Copyright des Quellcode-Kopfes → 2020
32f634b88 Optimiere Imports
000ca723d Entferne sinnlose boolesche Ausdrücke (business)
dd5ca38ac Copyright aller Java-Dateiköpfe aktualisiert oder erstellt
a5bbdca6a Logger auf slf4j umgestellt
f979e8a42 MGC-UPDATE: Update auf Version 3.0.0-SNAPSHOT
9ebb88522 Initialer Commit
Bemerkenswerte Änderung: a5bbdca6a stellte den Logger von einer proprietären Implementierung auf SLF4J um – Teil einer projektweiten Logging-Standardisierung. 000ca723d entfernte sinnlose boolesche Ausdrücke (z. B. == true oder redundante Null-Prüfungen) während eines Code-Bereinigungsdurchlaufs. f979e8a42 war ein großer Versionssprung von 2.x auf 3.0.0-SNAPSHOT.