Класс DocumentBuilderFactory
- java.lang.Object
-
- javax.xml.parsers.DocumentBuilderFactory
public abstract class DocumentBuilderFactory extends Object
Определяет API фабрики, который позволяет приложениям получать анализатор, который генерирует деревья объектов DOM из XML-документов.
- Since:
- 1.4
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | DocumentBuilderFactory() | Защищённый конструктор для предотвращения инстанцирования. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract Object | getAttribute(String name) | Позволяет пользователю получить определённые атрибуты в базовой реализации. |
abstract boolean | getFeature(String name) | Получить состояние указанного признака. |
Schema | getSchema() | Получает объект |
boolean | isCoalescing() | Указывает, настроена ли фабрика на создание анализаторов, которые преобразуют узлы CDATA в узлы Text и добавляют их к смежному (если есть) узлу Text. |
boolean | isExpandEntityReferences() | Указывает, настроена ли фабрика на создание анализаторов, которые расширяют узлы ссылок на сущности. |
boolean | isIgnoringComments() | Указывает, настроена ли фабрика на создание анализаторов, которые игнорируют комментарии. |
boolean | isIgnoringElementContentWhitespace() | Указывает, настроена ли фабрика на создание анализаторов, которые игнорируют игнорируемые пробелы в содержимом элементов. |
boolean | isNamespaceAware() | Указывает, настроена ли фабрика на создание анализаторов, которые учитывают пространства имён. |
boolean | isValidating() | Указывает, настроена ли фабрика на создание анализаторов, которые валидируют содержимое XML во время разбора. |
boolean | isXIncludeAware() | Получить состояние обработки XInclude. |
static DocumentBuilderFactory | newDefaultInstance() | Создаёт новый экземпляр встроенной реализации по умолчанию системы |
abstract DocumentBuilder | newDocumentBuilder() | Создаёт новый экземпляр |
static DocumentBuilderFactory | newInstance() | Получить новый экземпляр |
static DocumentBuilderFactory | newInstance(String factoryClassName,
ClassLoader classLoader) | Получить новый экземпляр |
abstract void | setAttribute(String name,
Object value) | Позволяет пользователю установить определённые атрибуты в базовой реализации. |
void | setCoalescing(boolean coalescing) | Указывает, что анализатор, созданный этим кодом, преобразует узлы CDATA в узлы Text и добавляет их к смежному (если есть) узлу text. |
void | setExpandEntityReferences(boolean expandEntityRef) | Указывает, что анализатор, созданный этим кодом, расширяет узлы ссылок на сущности. |
abstract void | setFeature(String name,
boolean value) | Устанавливает признак для этого |
void | setIgnoringComments(boolean ignoreComments) | Указывает, что анализатор, созданный этим кодом, игнорирует комментарии. |
void | setIgnoringElementContentWhitespace(boolean whitespace) | Указывает, что анализаторы, созданные этой фабрикой, должны удалять пробелы в содержимом элементов (иногда обозначаемые как «игнорируемые пробелы») при разборе XML-документов (см. XML Rec 2.10). |
void | setNamespaceAware(boolean awareness) | Указывает, что анализатор, созданный этим кодом, поддерживает XML-пространства имён. |
void | setSchema(Schema schema) | Установить |
void | setValidating(boolean validating) | Указывает, что анализатор, созданный этим кодом, будет валидировать документы по мере их разбора. |
void | setXIncludeAware(boolean state) | Установить состояние обработки XInclude. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
DocumentBuilderFactory
protected DocumentBuilderFactory()
Защищённый конструктор для предотвращения создания экземпляра. Используйте newInstance().
Методы
newDefaultInstance
public static DocumentBuilderFactory newDefaultInstance()
Создаёт новый экземпляр DocumentBuilderFactory встроенной реализации по умолчанию.
- Возвращает:
- Новый экземпляр
DocumentBuilderFactoryвстроенной реализации по умолчанию. - С момента:
- 9
newInstance
public static DocumentBuilderFactory newInstance()
Получить новый экземпляр DocumentBuilderFactory. Этот статический метод создаёт новый экземпляр фабрики. Этот метод использует следующую упорядоченную процедуру поиска для определения класса реализации DocumentBuilderFactory для загрузки:
- Используйте системное свойство
javax.xml.parsers.DocumentBuilderFactory. -
Используйте конфигурационный файл "jaxp.properties". Файл находится в стандартном формате
Propertiesи, как правило, расположен в каталогеconfустановки Java. Он содержит полное имя класса реализации, причём ключ — это системное свойство, определённое выше.Файл jaxp.properties считывается реализацией JAXP только один раз, а затем его значения кешируются для дальнейшего использования. Если файл не существует при первой попытке его чтения, дальнейшие попытки проверки его существования не производятся. Изменить значение любого свойства в файле jaxp.properties после его первого прочтения невозможно.
-
Используйте механизм загрузки поставщиков услуг, определённый классом
ServiceLoader, для попытки найти и загрузить реализацию службы с помощью механизма загрузки по умолчанию: механизм загрузки поставщиков услуг будет использовать класс загрузки текущей нити для попытки загрузки службы. Если класс загрузки контекста равен null, будет использован системный класс загрузки. -
В противном случае возвращается реализация по умолчанию системы.
После того, как приложение получило ссылку на DocumentBuilderFactory, оно может использовать фабрику для настройки и получения экземпляров анализаторов.
Совет по устранению неполадок
Установка системного свойства jaxp.debug заставит этот метод выводить много отладочных сообщений в System.err о выполняемых действиях и месте поиска.
Если у вас возникли проблемы с загрузкой DocumentBuilder, попробуйте:
java -Djaxp.debug=1 YourProgram ....
- Возвращает:
- Новый экземпляр
DocumentBuilderFactory - Выбрасывает:
-
FactoryConfigurationError- в случае ошибки конфигурации службы или если реализация недоступна или не может быть создана.
newInstance
public static DocumentBuilderFactory newInstance(String factoryClassName,
ClassLoader classLoader) Получить новый экземпляр DocumentBuilderFactory по имени класса. Эта функция полезна, когда в классе пути несколько поставщиков. Она даёт больше контроля приложению, так как оно может указать, какой поставщик должен быть загружен.
После того, как приложение получило ссылку на DocumentBuilderFactory, оно может использовать фабрику для настройки и получения экземпляров анализаторов.
Совет по устранению неполадок
Установка системного свойства jaxp.debug заставит этот метод выводить много отладочных сообщений в System.err о выполняемых действиях и месте поиска.
Если у вас возникли проблемы, попробуйте:
java -Djaxp.debug=1 YourProgram ....
- Параметры:
-
factoryClassName- полное имя класса фабрики, предоставляющей реализациюjavax.xml.parsers.DocumentBuilderFactory. -
classLoader-ClassLoaderдля загрузки класса фабрики. Еслиnullиспользуется текущийThreadкласс загрузки контекста. - Возвращает:
- Новый экземпляр
DocumentBuilderFactory - Выбрасывает:
-
FactoryConfigurationError- еслиfactoryClassNameявляетсяnull, или класс фабрики не может быть загружен, создан. - С момента:
- 1.6
- См. также:
newInstance()
newDocumentBuilder
public abstract DocumentBuilder newDocumentBuilder()
throws ParserConfigurationException Создаёт новый экземпляр DocumentBuilder с использованием текущих настроенных параметров.
- Возвращает:
- Новый экземпляр DocumentBuilder.
- Выбрасывает:
-
ParserConfigurationException- если DocumentBuilder не может быть создан, удовлетворяющий запрошенной конфигурации.
setNamespaceAware
public void setNamespaceAware(boolean awareness)
Указывает, что анализатор, созданный этим кодом, будет поддерживать XML-пространства имён. По умолчанию это значение установлено в false
- Параметры:
-
awareness- true, если создаваемый анализатор будет поддерживать XML-пространства имён; false в противном случае.
setValidating
public void setValidating(boolean validating)
Указывает, что анализатор, созданный этим кодом, будет проверять документы по мере их анализа. По умолчанию это значение установлено в false.
Обратите внимание, что "валидация" здесь означает валидирующий анализатор, как определено в рекомендациях по XML. Другими словами, он фактически только управляет проверкой DTD. (за исключением устаревших двух свойств, определённых в JAXP 1.2.)
Чтобы использовать современные языки схем, такие как W3C XML Schema или RELAX NG вместо DTD, вы можете настроить свой анализатор как невалидирующий, оставив метод setValidating(boolean) false, а затем используйте метод setSchema(Schema) для связывания схемы с анализатором.
- Параметры:
-
validating- true, если создаваемый анализатор будет проверять документы по мере их анализа; false в противном случае.
setIgnoringElementContentWhitespace
public void setIgnoringElementContentWhitespace(boolean whitespace)
Указывает, что создаваемые этой фабрикой анализаторы должны удалять пробелы в содержимом элементов (иногда их условно называют 'пробелами-исключениями') при разборе XML-документов (см. XML Rec 2.10). Обратите внимание, что удаляются только пробелы, которые непосредственно содержатся в содержимом элемента, имеющем только модель содержимого элемента (см. XML Rec 3.2.1). Из-за зависимости от модели содержимого это свойство требует, чтобы анализатор работал в режиме проверки. По умолчанию это значение установлено в false.
- Параметры:
-
whitespace- true, если создаваемый анализатор должен удалять пробелы в содержимом элементов при разборе XML-документов; false в противном случае.
setExpandEntityReferences
public void setExpandEntityReferences(boolean expandEntityRef)
Указывает, что создаваемый этим кодом анализатор будет расширять узлы ссылок на сущности. По умолчанию это значение установлено в true
- Параметры:
-
expandEntityRef- true, если создаваемый анализатор будет расширять ссылки на сущности; false в противном случае.
setIgnoringComments
public void setIgnoringComments(boolean ignoreComments)
Указывает, что создаваемый этим кодом анализатор будет игнорировать комментарии. По умолчанию это значение установлено в false.
- Параметры:
-
ignoreComments- значениеbooleanдля игнорирования комментариев во время обработки
setCoalescing
public void setCoalescing(boolean coalescing)
Указывает, что создаваемый этим кодом анализатор будет преобразовывать узлы CDATA в узлы Text и добавлять их к смежному (если есть) узлу Text. По умолчанию это значение установлено в false
- Параметры:
-
coalescing- true, если создаваемый анализатор будет преобразовывать узлы CDATA в узлы Text и добавлять их к смежному (если есть) узлу Text; false в противном случае.
isNamespaceAware
public boolean isNamespaceAware()
Указывает, настроен ли фабрика для создания анализаторов, которые знают о пространствах имён.
- Возвращает:
- true, если фабрика настраивается на создание анализаторов, которые знают о пространствах имён; false в противном случае.
isValidating
public boolean isValidating()
Указывает, настроен ли фабрика для создания анализаторов, которые проверяют XML-содержимое во время анализа.
- Возвращает:
- true, если фабрика настраивается на создание анализаторов, которые проверяют XML-содержимое во время анализа; false в противном случае.
isIgnoringElementContentWhitespace
public boolean isIgnoringElementContentWhitespace()
Указывает, настроен ли фабрика для создания анализаторов, которые игнорируют пробелы в содержимом элементов.
- Возвращает:
- true, если фабрика настраивается на создание анализаторов, которые игнорируют пробелы в содержимом элементов; false в противном случае.
isExpandEntityReferences
public boolean isExpandEntityReferences()
Указывает, настроен ли фабрика для создания анализаторов, которые расширяют ссылки на сущности.
- Возвращает:
- true, если фабрика настраивается на создание анализаторов, которые расширяют ссылки на сущности; false в противном случае.
isIgnoringComments
public boolean isIgnoringComments()
Указывает, настроен ли фабрика для создания анализаторов, которые игнорируют комментарии.
- Возвращает:
- true, если фабрика настраивается на создание анализаторов, которые игнорируют комментарии; false в противном случае.
isCoalescing
public boolean isCoalescing()
Указывает, настроен ли фабрика для создания анализаторов, которые преобразуют узлы CDATA в узлы Text и добавляют их к смежному (если есть) узлу Text.
- Возвращает:
- true, если фабрика настраивается на создание анализаторов, которые преобразуют узлы CDATA в узлы Text и добавляют их к смежному (если есть) узлу Text; false в противном случае.
setAttribute
public abstract void setAttribute(String name,
Object value)
throws IllegalArgumentException Позволяет пользователю задавать определённые атрибуты для базовой реализации.
Все реализации, поддерживающие JAXP 1.5 или более позднюю версию, обязаны поддерживать свойства XMLConstants.ACCESS_EXTERNAL_DTD и XMLConstants.ACCESS_EXTERNAL_SCHEMA.
- Установление свойства
XMLConstants.ACCESS_EXTERNAL_DTDограничивает доступ к внешним DTD, внешним ссылкам на сущности протоколами, указанными в свойстве. Если доступ запрещён во время разбора из-за ограничения этого свойства,SAXExceptionбудет выброшен методами разбора, определённымиDocumentBuilder. - Установление свойства
XMLConstants.ACCESS_EXTERNAL_SCHEMAограничивает доступ к внешним схемам, заданным атрибутом schemaLocation, протоколами, указанными в свойстве. Если доступ запрещён во время разбора из-за ограничения этого свойства,SAXExceptionбудет выброшен методами разбора, определённымиDocumentBuilder.
- Параметры:
-
name- Имя атрибута. -
value- Значение атрибута. - Исключения:
-
IllegalArgumentException- выброшено, если базовая реализация не распознаёт атрибут.
getAttribute
public abstract Object getAttribute(String name)
throws IllegalArgumentException Позволяет пользователю извлекать определённые атрибуты из базовой реализации.
- Параметры:
-
name- Имя атрибута. - Возвращает:
- значение Значение атрибута.
- Исключения:
-
IllegalArgumentException- выброшено, если базовая реализация не распознаёт атрибут.
setFeature
public abstract void setFeature(String name,
boolean value)
throws ParserConfigurationException Устанавливает свойство для этого DocumentBuilderFactory и DocumentBuilders, созданных этим фабричным методом.
Имена свойств — полностью квалифицированные URI значения. Реализации могут определять свои собственные свойства. ParserConfigurationException выбрасывается, если этот DocumentBuilderFactory или созданные им DocumentBuilders не поддерживают свойство. Возможно, DocumentBuilderFactory предоставляет значение свойства, но не может изменить его состояние.
Все реализации должны поддерживать свойство XMLConstants.FEATURE_SECURE_PROCESSING. Когда свойство:
true: реализация ограничит обработку XML в соответствии с ограничениями реализации. Примеры включают ограничения расширения сущностей и конструкции XML Schema, которые потребляли бы большие объёмы ресурсов. Если обработка XML ограничена по соображениям безопасности, об этом будет сообщено вызовом зарегистрированного обработчика ошибокErrorHandler.fatalError(SAXParseException exception). См.DocumentBuilder.setErrorHandler(org.xml.sax.ErrorHandler errorHandler).false: реализация будет обрабатывать XML в соответствии со спецификациями XML без учёта возможных ограничений реализации.
- Параметры:
-
name- Имя свойства. -
value- Состояние свойстваtrueилиfalse. - Исключения:
-
ParserConfigurationException- если этотDocumentBuilderFactoryили созданные имDocumentBuilders не поддерживают это свойство. -
NullPointerException- Если параметрnameравен null. - С момента:
- 1.5
getFeature
public abstract boolean getFeature(String name)
throws ParserConfigurationException Получает состояние указанного свойства.
Имена свойств — полностью квалифицированные URI значения. Реализации могут определять свои собственные свойства. ParserConfigurationException выбрасывается, если этот DocumentBuilderFactory или созданные им DocumentBuilders не поддерживают свойство. Возможно, DocumentBuilderFactory предоставляет значение свойства, но не может изменить его состояние.
- Параметры:
-
name- Имя свойства. - Возвращает:
- Состояние указанного свойства.
- Исключения:
-
ParserConfigurationException- если этотDocumentBuilderFactoryили созданные имDocumentBuilders не поддерживают это свойство. - С момента:
- 1.5
getSchema
public Schema getSchema()
Возвращает объект Schema, указанный методом setSchema(Schema schema).
- Возвращает:
- объект
Schema, последний установленный методомsetSchema(Schema), или null, если метод не вызывался с момента созданияDocumentBuilderFactory. - Исключения:
-
UnsupportedOperationException- Когда реализация не переопределяет этот метод. - С момента:
- 1.5
setSchema
public void setSchema(Schema schema)
Устанавливает Schema, который будет использоваться анализаторами, созданными из этой фабрики.
Если Schema не равен null, анализатор будет использовать созданный из него валидатор для проверки документов перед передачей информации приложению.
При обнаружении ошибок валидатором анализатор отвечает за их сообщение пользователю-указанному ErrorHandler (или, если обработчик ошибок не задан, игнорирование их или их выброс), как и любые другие ошибки, обнаруженные самим анализатором. Другими словами, если указанный пользователем ErrorHandler установлен, он должен получить эти ошибки, а если нет, они должны обрабатываться в соответствии с правилами обработки ошибок по умолчанию, специфичными для реализации.
Валидатор может изменить результат разбора (например, добавив пропущенные значения по умолчанию в документах), и анализатор отвечает за то, чтобы приложение получило изменённые DOM-деревья.
Изначально в качестве Schema установлено значение null.
Эта обработка будет действовать даже если метод isValidating() возвращает false.
Использование свойств http://java.sun.com/xml/jaxp/properties/schemaSource и/или http://java.sun.com/xml/jaxp/properties/schemaLanguage в сочетании с объектом Schema является ошибкой. Такая конфигурация приведёт к исключению ParserConfigurationException при вызове newDocumentBuilder().
Примечание для разработчиков реализаций
Анализатор должен быть совместим с любой реализацией Schema. Однако анализаторам и схемам разрешается использовать специфичные для реализации механизмы, если они дают результат, описанный в спецификации.
- Параметры:
-
schema-Schemaдля использования илиnullдля удаления схемы. - Исключения:
-
UnsupportedOperationException- Когда реализация не переопределяет этот метод. - С момента:
- 1.5
setXIncludeAware
public void setXIncludeAware(boolean state)
Устанавливает состояние обработки XInclude.
Если в документе-экземпляре обнаружен тег XInclude, он должен обрабатываться в соответствии со спецификацией XML Inclusions (XInclude) Version 1.0.
Обработка XInclude по умолчанию — false.
- Параметры:
-
state- Установить обработку XInclude наtrueилиfalse - Исключения:
-
UnsupportedOperationException- Когда реализация не переопределяет этот метод. - С момента:
- 1.5
isXIncludeAware
public boolean isXIncludeAware()
Получает состояние обработки XInclude.
- Возвращает:
- Текущее состояние обработки XInclude
- Исключения:
-
UnsupportedOperationException- Когда реализация не переопределяет этот метод. - С момента:
- 1.5
© 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/parsers/DocumentBuilderFactory.html