Рубрики
Без рубрики

Напишите org.w3.dom.Документ в файл

Узнайте, как писать и настраивать вывод XML на Java

Автор оригинала: baeldung.

1. Обзор

Важной частью обработки XML является создание XML-файлов, которые могут быть использованы другими пользователями.

При обработке XML в Java у нас часто будет экземпляр org.w3c.dom.Документ , который нам нужно экспортировать.

В этом кратком руководстве мы увидим, как записать Документ в файл как в линейном, так и в печатном формате .

2. Использование трансформатора

Тяжеловес при записи Document s в файлы-это javax.xml.transform.Трансформатор.

2.1. Создание трансформатора

Итак, давайте начнем с получения TransformerFactory . Мы будем использовать эту фабрику для создания трансформатора:

TransformerFactory transformerFactory = TransformerFactory.newInstance()

Системное свойство javax.xml.transform.TransformerFactory указывает, какую реализацию фабрики следует создать. Следовательно, это свойство называет конкретный подкласс TransformerFactory абстрактного класса. Но, если мы не определим это свойство, трансформатор просто будет использовать платформу по умолчанию.

Обратите внимание, что начиная с Java 9, мы можем использовать Трансформер-фабрика. новый экземпляр по умолчанию( ) для создания встроенной реализации системы по умолчанию.

Теперь, когда у нас есть завод, давайте создадим Трансформатор :

Transformer transformer = transformerFactory.newTransformer();

2.2. Указание Источника и Результата

Трансформатор преобразует источник в результат. В нашем случае источником является XML-документ, а результатом-выходной файл.

Во-первых, давайте уточним источник преобразования. Здесь мы будем использовать наш Документ для создания источника DOM:

DOMSource source = new DOMSource(document);

Обратите внимание, что источником не обязательно должен быть весь документ. Пока XML хорошо сформирован, мы можем использовать поддерево документа.

Далее мы определим, где трансформатор должен записать результат преобразования:

FileWriter writer = new FileWriter(new File(fileName));
StreamResult result = new StreamResult(writer);

Здесь мы говорим трансформатору, что результатом является поток файлов. Но мы можем использовать любой тип java.io.Writer или java.io.OutputStream для создания StreamResult. Например, мы могли бы использовать StringWriter для создания Строки , которая затем может быть зарегистрирована.

2.3. Создание XML-файла

Наконец, мы скажем трансформатору, чтобы он работал с исходным объектом и выводил результат на объект:

transformer.transform(source, result);

Это, наконец, создаст файл с содержимым XML-документа:


  

3. Настройка выходных данных

Мы можем настроить XML, записанный в файл, указав различные свойства вывода . Давайте рассмотрим некоторые из них.

3.1. Pretty-Печать выходных данных

Теперь наш трансформатор по умолчанию просто записал все в одну строку, что не так приятно читать. Действительно, было бы еще труднее читать, если бы XML был большим.

Мы можем настроить ваш трансформатор для печати, установив Мы можем настроить ваш трансформатор для печати, установив недвижимость на трансформаторе:

transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");

Обратите внимание, что вместе с ключами output.ОТСТУП , мы также указали здесь свойство indent-amount . Это приведет к правильному отступу выходных данных, так как по умолчанию отступ равен нулю пробелов.

С вышеуказанным набором свойств мы получаем гораздо более приятный результат:



    
        
        
    

3.2. Опущение XML-декларации

Иногда мы можем захотеть исключить объявление XML.

Мы можем настроить наш трансформатор для этого, установив клавиши OUTPUT.OMIT_XML_DECLARATION свойство:

transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");

И снова используя наш трансформатор, мы получаем:


    
        
        
    

3.3. Другие Выходные Свойства

Таким образом, помимо красивой печати и пропуска XML-декларации, мы можем настроить вывод и другими способами:

  • Мы можем указать версию XML с помощью OutputKeys.ВЕРСИЯ, по умолчанию “1.0”
  • Мы можем указать нашу предпочтительную кодировку символов с помощью OutputKeys.КОДИРОВКА , по умолчанию используется “utf-8”
  • Кроме того, мы также можем указать другие типичные атрибуты объявления, такие как SYSTEM , PUBLIC и STANDALONE .

4. Заключение

В этом уроке мы рассмотрели, как экспортировать org.w3c.Document в файл и как настроить выходные данные.

И, конечно же, сопутствующий исходный код доступен на GitHub