Класс XMLOutputFactory
- java.lang.Object
-
- javax.xml.stream.XMLOutputFactory
public abstract class XMLOutputFactory extends Object
Определяет абстрактную реализацию фабрики для получения XMLEventWriters и XMLStreamWriters. В следующей таблице определены стандартные свойства этого спецификатора. Каждое свойство отличается по уровню поддержки, требуемому каждой реализацией. Уровень требуемой поддержки описан в столбце «Требуется».
| Имя свойства | Поведение | Тип возвращаемого значения | Значение по умолчанию | Требуется |
|---|---|---|---|---|
| javax.xml.stream.isRepairingNamespaces | по умолчанию устанавливает префиксы на стороне вывода | Boolean | False | Да |
В следующих абзацах описывается алгоритм исправления имен пространств имён и префиксов:
Свойство можно установить с помощью следующей строки кода: setProperty("javax.xml.stream.isRepairingNamespaces", new Boolean(true|false));
Это свойство указывает, что писатель должен использовать префиксы по умолчанию для объявлений пространств имён. Значение по умолчанию — false.
Если у писателя isRepairingNamespaces установлено в true, он создаст объявление пространства имён для текущего элемента StartElement для любого атрибута, у которого нет объявления пространства имён в текущей области видимости. Если у StartElement есть uri, но нет указанного префикса, префикс будет назначен; если префикс не был объявлен в родительском элементе текущего StartElement, он будет объявлен в текущем StartElement. Если defaultNamespace привязано и в области видимости, и значение по умолчанию совпадает с URI атрибута или QName StartElement, префикс не будет назначен.
Если у имени элемента или атрибута есть префикс, но он не привязан к URI пространства имён, то префикс будет удалён во время сериализации.
Если имена элемента и/или атрибута в одном элементе start или empty-element связаны с различными URI пространств имён и используют один и тот же префикс, то элемент или первый встречающийся атрибут сохраняют исходный префикс, а последующие атрибуты заменяют свои префиксы новым префиксом, связанным с URI пространств имён этих атрибутов.
Если имя элемента или атрибута использует префикс, связанный с URI, отличным от унаследованного из контекста пространства имён родителя этого элемента, и нет объявления пространства имён в контексте текущего элемента, такое объявление пространства имён добавляется.
Если имя элемента или атрибута связано с префиксом, и есть объявление пространства имён, которое связывает этот префикс с другим URI, это объявление пространства имён либо удаляется, если правильное сопоставление унаследовано из родительского контекста этого элемента, либо изменяется на URI пространства имён элемента или атрибута, использующего этот префикс.
- С момента:
- 1.6
- См. также:
-
XMLInputFactory,XMLEventWriter,XMLStreamWriter
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
static String | IS_REPAIRING_NAMESPACES | Свойство, используемое для установки значения по умолчанию для префиксов на стороне вывода |
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | XMLOutputFactory() |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract XMLEventWriter | createXMLEventWriter(OutputStream stream) | Создание нового XMLEventWriter, записывающего в поток |
abstract XMLEventWriter | createXMLEventWriter(OutputStream stream,
String encoding) | Создание нового XMLEventWriter, записывающего в поток |
abstract XMLEventWriter | createXMLEventWriter(Writer stream) | Создание нового XMLEventWriter, записывающего в поток |
abstract XMLEventWriter | createXMLEventWriter(Result result) | Создание нового XMLEventWriter, записывающего в JAXP-результат. |
abstract XMLStreamWriter | createXMLStreamWriter(OutputStream stream) | Создание нового XMLStreamWriter, записывающего в поток |
abstract XMLStreamWriter | createXMLStreamWriter(OutputStream stream,
String encoding) | Создание нового XMLStreamWriter, записывающего в поток |
abstract XMLStreamWriter | createXMLStreamWriter(Writer stream) | Создание нового XMLStreamWriter, записывающего в поток |
abstract XMLStreamWriter | createXMLStreamWriter(Result result) | Создание нового XMLStreamWriter, записывающего в JAXP-результат. |
abstract Object | getProperty(String name) | Получение свойства/функции на основе реализации |
abstract boolean | isPropertySupported(String name) | Запрос набора свойств, поддерживаемых этой фабрикой. |
static XMLOutputFactory | newDefaultFactory() | Создаёт новый экземпляр |
static XMLOutputFactory | newFactory() | Создание нового экземпляра фабрики. |
static XMLOutputFactory | newFactory(String factoryId,
ClassLoader classLoader) | Создание нового экземпляра фабрики. |
static XMLOutputFactory | newInstance() | Создаёт новый экземпляр фабрики точно так же, как метод |
static XMLInputFactory | newInstance(String factoryId,
ClassLoader classLoader) | Устарело. Этот метод устарел, потому что возвращает экземпляр XMLInputFactory, который имеет неверный класс. |
abstract void | setProperty(String name,
Object value) | Позволяет пользователю установить определённые свойства/функции в подлежащей реализации. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Подробное описание полей
IS_REPAIRING_NAMESPACES
public static final String IS_REPAIRING_NAMESPACES
Свойство, используемое для установки значения по умолчанию для префиксов на стороне вывода
- См. также:
- Значения константных полей
Подробное описание конструкторов
XMLOutputFactory
protected XMLOutputFactory()
Методы
newDefaultFactory
public static XMLOutputFactory newDefaultFactory()
Создаёт новый экземпляр XMLOutputFactory стандартной реализации системы.
- Возвращает:
- Новый экземпляр
XMLOutputFactoryстандартной реализации системы. - С:
- 9
newInstance
public static XMLOutputFactory newInstance()
throws FactoryConfigurationError Создаёт новый экземпляр фабрики точно так же, как метод newFactory().
- Исключение:
-
FactoryConfigurationError- если экземпляр этой фабрики не может быть загружен
newFactory
public static XMLOutputFactory newFactory()
throws FactoryConfigurationError Создаёт новый экземпляр фабрики.
Этот статический метод создаёт новый экземпляр фабрики. Этот метод использует следующую упорядоченную процедуру поиска для определения класса реализации XMLOutputFactory для загрузки:
- Использует свойство системы javax.xml.stream.XMLOutputFactory.
-
Использует файл конфигурации "stax.properties". Файл имеет стандартный
Propertiesформат и обычно находится в каталогеconfустановки Java. Он содержит полное имя класса реализации, где ключ — это свойство системы, определённое выше.Файл stax.properties считывается реализацией только один раз, а его значения кэшируются для дальнейшего использования. Если файл не существует во время первой попытки чтения из него, дальнейшие попытки проверки его существования не предпринимаются. Изменить значение любого свойства в файле stax.properties после первого чтения невозможно.
Использует файл конфигурации jaxp "jaxp.properties". Файл имеет тот же формат, что и stax.properties, и будет прочитан только в том случае, если stax.properties не существует.
-
Использует механизм загрузки поставщиков услуг, определённый классом
ServiceLoader, для поиска и загрузки реализации службы с использованием механизма стандартной загрузки: механизм загрузки поставщиков услуг будет использовать поток текущей нити для попытки загрузки службы. Если загрузчик контекста потока равен null, будет использован системный загрузчик классов. -
В противном случае возвращается стандартная реализация.
После того, как приложение получило ссылку на XMLOutputFactory, оно может использовать фабрику для настройки и получения экземпляров потока.
- Исключение:
-
FactoryConfigurationError- в случае ошибки конфигурации службы или если реализация недоступна или не может быть создана.
newInstance
@Deprecated(since="1.7")
public static XMLInputFactory newInstance(String factoryId,
ClassLoader classLoader)
throws FactoryConfigurationError newFactory(java.lang.String,
java.lang.ClassLoader) вместо него.Создаёт новый экземпляр фабрики.
- Параметры:
-
factoryId- Имя фабрики для поиска, совпадает с именем свойства -
classLoader- Использовать загрузчик классов - Возвращает:
- реализация фабрики
- Исключение:
-
FactoryConfigurationError- если экземпляр этой фабрики не может быть загружен
newFactory
public static XMLOutputFactory newFactory(String factoryId,
ClassLoader classLoader)
throws FactoryConfigurationError Создаёт новый экземпляр фабрики. Если аргумент classLoader равен null, используется ContextClassLoader.
Этот метод использует следующую упорядоченную процедуру поиска для определения класса реализации XMLOutputFactory для загрузки:
- Использует значение системного свойства, идентифицированного по
factoryId. -
Использует файл конфигурации "stax.properties". Файл имеет стандартный
Propertiesформат и обычно находится в каталогеconfустановки Java. Он содержит полное имя класса реализации, где ключ — это системное свойство, определённое выше.Файл stax.properties считывается реализацией только один раз, а его значения кэшируются для дальнейшего использования. Если файл не существует во время первой попытки чтения из него, дальнейшие попытки проверки его существования не предпринимаются. Изменить значение любого свойства в файле stax.properties после первого чтения невозможно.
Использует файл конфигурации jaxp "jaxp.properties". Файл имеет тот же формат, что и stax.properties, и будет прочитан только в том случае, если stax.properties не существует.
-
Если
factoryIdравно "javax.xml.stream.XMLOutputFactory", использует механизм загрузки поставщиков услуг, определённый классомServiceLoader, для поиска и загрузки реализации службы с использованием указанногоClassLoader. ЕслиclassLoaderравен null, применяется механизм стандартной загрузки: то есть механизм загрузки поставщиков услуг будет использовать поток текущей нити для попытки загрузки службы. Если загрузчик контекста потока равен null, будет использован системный загрузчик классов. -
В противном случае генерируется
FactoryConfigurationError.
- Примечание API:
- Параметр factoryId, определённый здесь, не согласован с параметрами других фабрик JAXP, где первый параметр — это полное имя класса фабрики, обеспечивающее реализацию фабрики.
Обратите внимание, что это новый метод, который заменяет устаревший метод
newInstance(String factoryId, ClassLoader classLoader). Исходный метод был неправильно определён для возврата XMLInputFactory. - Параметры:
-
factoryId- Имя фабрики для поиска, совпадает с именем свойства -
classLoader- Использовать загрузчик классов - Возвращает:
- реализация фабрики
- Исключение:
-
FactoryConfigurationError- в случае ошибки конфигурации службы или если реализация недоступна или не может быть создана.
createXMLStreamWriter
public abstract XMLStreamWriter createXMLStreamWriter(Writer stream)
throws XMLStreamException Создаёт новый XMLStreamWriter, который записывает в поток
- Параметры:
-
stream- поток для записи - Исключение:
XMLStreamException
createXMLStreamWriter
public abstract XMLStreamWriter createXMLStreamWriter(OutputStream stream)
throws XMLStreamException Создаёт новый XMLStreamWriter, который записывает в поток
- Параметры:
-
stream- поток для записи - Исключение:
XMLStreamException
createXMLStreamWriter
public abstract XMLStreamWriter createXMLStreamWriter(OutputStream stream,
String encoding)
throws XMLStreamException Создаёт новый XMLStreamWriter, который записывает в поток
- Параметры:
-
stream- поток для записи -
encoding- кодировка для использования - Исключение:
XMLStreamException
createXMLStreamWriter
public abstract XMLStreamWriter createXMLStreamWriter(Result result)
throws XMLStreamException Создаёт новый XMLStreamWriter, который записывает в результат JAXP. Этот метод является необязательным.
- Параметры:
-
result- результат для записи - Исключение:
-
UnsupportedOperationException- если этот метод не поддерживается этим XMLOutputFactory XMLStreamException
createXMLEventWriter
public abstract XMLEventWriter createXMLEventWriter(Result result)
throws XMLStreamException Создаёт новый XMLEventWriter, который записывает в результат JAXP. Этот метод является необязательным.
- Параметры:
-
result- результат для записи - Исключение:
-
UnsupportedOperationException- если этот метод не поддерживается этим XMLOutputFactory XMLStreamException
createXMLEventWriter
public abstract XMLEventWriter createXMLEventWriter(OutputStream stream)
throws XMLStreamException Создаёт новый XMLEventWriter, который записывает в поток
- Параметры:
-
stream- поток для записи - Исключение:
XMLStreamException
createXMLEventWriter
public abstract XMLEventWriter createXMLEventWriter(OutputStream stream,
String encoding)
throws XMLStreamException Создаёт новый XMLEventWriter, который записывает в поток
- Параметры:
-
stream- поток для записи -
encoding- кодировка для использования - Исключение:
XMLStreamException
createXMLEventWriter
public abstract XMLEventWriter createXMLEventWriter(Writer stream)
throws XMLStreamException Создаёт новый XMLEventWriter, который записывает в поток
- Параметры:
-
stream- поток для записи - Исключение:
XMLStreamException
setProperty
public abstract void setProperty(String name,
Object value)
throws IllegalArgumentException Позволяет пользователю задать определённые параметры/свойства для основной реализации.
- Параметры:
-
name- Имя свойства -
value- Значение свойства - Исключение:
-
IllegalArgumentException- если свойство не поддерживается
getProperty
public abstract Object getProperty(String name)
throws IllegalArgumentException Получает параметр/свойство основной реализации
- Параметры:
-
name- Имя свойства - Возвращает:
- Значение свойства
- Исключение:
-
IllegalArgumentException- если свойство не поддерживается
isPropertySupported
public abstract boolean isPropertySupported(String name)
Запрашивает набор свойств, поддерживаемых этой фабрикой.
- Параметры:
-
name- Имя свойства (не может быть null) - Возвращает:
- true, если свойство поддерживается, и false в противном случае
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.xml/javax/xml/stream/XMLOutputFactory.html