EN · DE · RU · FR · ES

#753: XmlHelper.java

Строк: 135 · Автор: Kai Reinhard · Тип: Java утилита · Пакет: org.projectforge.framework.xmlstream

Что это

Утилитный класс для работы с XML — преобразование строк в XML-элементы, XML-элементов в строки, форматирование. 135 строк. Использует библиотеку dom4j для парсинга и сериализации обычного XML. Это третья XML-библиотека в проекте наряду с XStream и W3C DOM API.

Константа XML_HEADER = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" — стандартный XML-заголовок, используемый при генерации XML-файлов для экспорта. Кодировка жёстко зафиксирована как UTF-8.

Методы

replaceQuotes(String xml) — нормализация кавычек

Заменяет одинарные кавычки (') на двойные (") в XML-строке. Javadoc: "This is useful for writing xml string constants e.g. in test cases." Позволяет писать в тестах: XmlHelper.replaceQuotes("<node name='test'/>")"<node name=\"test\"/>".

fromString(String str) — строка → dom4j Element

Парсит XML-строку в dom4j Element. Использует DocumentHelper.parseText(). При ошибке парсинга логирует и возвращает null (не бросает исключение). Для пустой строки возвращает null.

toString(Element el, boolean prettyFormat) — dom4j Element → отформатированная XML-строка

Сериализует dom4j Element обратно в строку. Использует dom4j'евский XMLWriter с OutputFormat. При prettyFormat=true: включает переносы строк и отступ в 2 пробела.

toString(org.w3c.dom.Document, boolean prettyFormat) — W3C DOM Document → строка

Работает с другим типом XMLorg.w3c.dom.Document (SVG/Batik). Использует javax.xml.transform.Transformer. Все ошибки оборачиваются в InternalErrorException (в отличие от dom4j-метода который логирует и возвращает null).

Две XML-библиотеки в одном классе — архитектурный долг

Наличие методов для двух разных XML-представлений (dom4j и W3C DOM) в одном классе — это исторический артефакт. dom4j используется для XmlStream (сериализация данных), W3C DOM — для SVG-рендеринга (Batik). Правильный рефакторинг: выделить W3C-метод в SvgXmlHelper.

Git History

868d6abb7 2025 → 2026
63081666f Source file headers: 2024→2025
b6092df09 Copyright 2023 → 2024
ab45d51fa Copyright 2001-2022 → 2001-2023
5f7ef41b8 Copyright 2021 → 2022
cd27dd997 package xstream → xmlstream
ceb63e8a1 Source code header: (C) 2001-2021
7c79f1922 Copyright of source header → 2020
32f634b88 Optimize imports
000ca723d Remove pointless boolean expressions
dd5ca38ac CopyRight of all java file-header updated or created
a5bbdca6a Change logger to slf4j
f979e8a42 MGC-UPDATE: Update auf Version 3.0.0-SNAPSHOT
9ebb88522 Initial commit

a5bbdca6a — переход логгера на SLF4J. 000ca723d — удаление бессмысленных булевых выражений.