Я работаю над XML Writer для преобразования формата.Я решил использовать StAX API (точнее, API курсора) из-за возможностей потоковой передачи (входной файл довольно большой и должен записываться сегмент за сегментом).Я использую формат данных (некоторые классы) для хранения проанализированных значений из входного файла.Я также создал несколько классов для написания XML-файла, которые имеют метод writeNode.Этот метод выглядит следующим образом:
public void writeNode(Object object){
writer.writeStartElement();
... some writeNode calls of the children nodes
writer.writeEndElement();
}
Объект с именем «writer» является экземпляром класса StAXStreamWriter.Моя проблема в том, что иногда эти дочерние узлы пусты.В этих случаях родительские узлы вообще не должны быть записаны.Прямо сейчас я генерирую пустые узлы, потому что начальный тег текущего узла уже записан.Насколько я знаю, это не может быть полностью изменено.Любые идеи, чтобы решить эту проблему?
С наилучшими пожеланиями
Ларс
Обновление:
Я думаю, я нашел решение.Я напишу свой собственный класс, который реализует интерфейс XMLStreamWriter.В этом классе я буду использовать структуру данных очереди или списка для хранения начальных тегов, пока не будет записан первый атрибут или значение узла.
Обновление 2:
Вот более точное описание моего решения.Я использовал шаблон дизайна декоратора, чтобы обернуть свой новый класс вокруг стандартного класса streamwriter.Этот класс имеет ArrayList, в котором начальные теги хранятся до вызова метода writeCharacter.