Проект Apache XML: Xerces-J - включает пакет org.apache.xml.serialize для записи объектов Document DOM в выходной поток. Хотя этот класс связан с Xerces, он работает с любой реализацией DOM Level 2. Здесь нет зависимости от деталей реализации классов Xerces, а только от стандартных интерфейсов DOM.

Механизм сериализации документа с помощью org.apache.xml.serialize таков:

  1. Сконфигурировать объект OutputFormat с теми параметрами сериализации, которые вам нужны.
  2. Соединить OutputStream с местом, в котором вы хотите хранить данные.
  3. Использовать OutputStream и OutputFormat для создания нового объекта XMLSerializer.
  4. Передать объект Document, который вы хотите сериализировать, в метод serialize() от XMLSerializer.

Вот пример, который примет tij_menu.xml и сериализует его в System.out:

import org.apache.xerces.parsers.DOMParser;

import org.apache.xml.serialize.XMLSerializer;

import org.apache.xml.serialize.OutputFormat;

import org.w3c.dom.Document;

public class menuSerializer {
  
static public void main ( String [] argv ) {
     
try {
        
// Xerces Parser
        
DOMParser parser = new DOMParser () ;
         parser.parse
( "file:tij_menu.xml" ) ;
         Document doc = parser.getDocument
() ;
        
// serialize document
        
OutputFormat format = new OutputFormat ( doc ) ;
         XMLSerializer output =
new XMLSerializer ( System.out, format ) ;
         output.serialize
( doc ) ;
     
}
     
catch ( Exception e ) {
        
e.printStackTrace () ;
     
}
   }
}

XMLSerializer имеет несколько конструкторов, которые вы можете использовать в зависимости от того, хотите ли вы записывать в OutputStream или во Writer и хотите ли вы предоставлять OutputFormat во время создания сериализующего объекта:

public XMLSerializer () ;
public XMLSerializer ( OutputFormat format ) ;
public XMLSerializer ( Writer out, OutputFormat format ) ;
public XMLSerializer ( OutputStream out, OutputFormat format ) ;

Вы можете, вероятно, определить формат и поток или Writer, когда вы конструируете XMLSerializer. Вы также можете изменить их с помощью таких методов:

public void setOutputFormat ( OutputFormat format ) ;
public void setOutputByteStream ( OutputStream out ) ;
public void setOutputCharStream ( Writer out ) ;