Класс SAXParserFactory
- java.lang.Object
-
- javax.xml.parsers.SAXParserFactory
public abstract class SAXParserFactory extends Object
Определяет фабричный API, который позволяет приложениям настраивать и получать SAX-парсер для разбора XML-документов.
- Since:
- 1.4
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | SAXParserFactory() | Защищённый конструктор для принудительного использования |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract boolean | getFeature(String name) | Возвращает запрошенное свойство в базовой реализации org.xml.sax.XMLReader. |
Schema | getSchema() | Получает объект |
boolean | isNamespaceAware() | Указывает, настроен ли фабрика для создания парсеров, осознающих пространства имён. |
boolean | isValidating() | Указывает, настроен ли фабрика для создания парсеров, которые валидируют содержимое XML во время разбора. |
boolean | isXIncludeAware() | Получить состояние обработки XInclude. |
static SAXParserFactory | newDefaultInstance() | Создаёт новый экземпляр |
static SAXParserFactory | newInstance() | Получить новый экземпляр |
static SAXParserFactory | newInstance(String factoryClassName,
ClassLoader classLoader) | Получить новый экземпляр |
abstract SAXParser | newSAXParser() | Создаёт новый экземпляр SAXParser, используя текущие настроенные параметры фабрики. |
abstract void | setFeature(String name,
boolean value) | Устанавливает конкретный параметр в базовой реализации org.xml.sax.XMLReader. |
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 Конструкторы
SAXParserFactory
protected SAXParserFactory()
Защищенный конструктор для принудительного использования newInstance().
Методы
newDefaultInstance
public static SAXParserFactory newDefaultInstance()
Создаёт новый экземпляр SAXParserFactory встроенной реализации по умолчанию.
- Возвращает:
- Новый экземпляр
SAXParserFactoryвстроенной реализации по умолчанию. - С:
- 9
newInstance
public static SAXParserFactory newInstance()
Получает новый экземпляр SAXParserFactory. Этот статический метод создаёт новый экземпляр фабрики. Метод использует следующий упорядоченный поиск для определения класса реализации SAXParserFactory для загрузки:
- Использует системное свойство
javax.xml.parsers.SAXParserFactory. -
Использует файл конфигурации "jaxp.properties". Файл находится в стандартном формате
Propertiesи обычно расположен в директорииconfустановки Java. Он содержит полное имя класса реализации, при этом ключ соответствует вышеопределённому системному свойству.Файл jaxp.properties читается реализацией JAXP только один раз, а его значения кешируются для дальнейшего использования. Если файл не существует при первой попытке его чтения, дальнейшие попытки проверки его существования не выполняются. Изменить значение любого свойства в jaxp.properties после его первого прочтения невозможно.
-
Использует механизм загрузки поставщиков услуг, определённый классом
ServiceLoader, для поиска и загрузки реализации сервиса с использованием механизма загрузки по умолчанию: механизм загрузки поставщиков услуг будет использовать класс загрузки контекста текущей нити для попытки загрузки сервиса. Если класс загрузки контекста равен null, будет использоваться системный класс загрузки. -
В противном случае возвращается реализация по умолчанию системы.
После того, как приложение получило ссылку на SAXParserFactory, оно может использовать фабрику для настройки и получения экземпляров парсеров.
Совет по устранению неполадок
Установка системного свойства jaxp.debug заставит этот метод выводить много отладочных сообщений в System.err о выполняемых действиях и местах поиска.
Если у вас возникли проблемы с загрузкой SAXParser, попробуйте:
java -Djaxp.debug=1 YourProgram ....
- Возвращает:
- Новый экземпляр SAXParserFactory.
- Выбрасывает:
-
FactoryConfigurationError- в случае ошибки конфигурации сервиса или если реализация недоступна или не может быть создана.
newInstance
public static SAXParserFactory newInstance(String factoryClassName,
ClassLoader classLoader) Получает новый экземпляр SAXParserFactory по имени класса. Эта функция полезна, когда в пути класса имеется несколько поставщиков. Она предоставляет приложению больший контроль, позволяя указать, какой поставщик должен быть загружен.
После того, как приложение получило ссылку на SAXParserFactory, оно может использовать фабрику для настройки и получения экземпляров парсеров.
Совет по устранению неполадок
Установка системного свойства jaxp.debug заставит этот метод выводить много отладочных сообщений в System.err о выполняемых действиях и местах поиска.
Если у вас возникли проблемы, попробуйте:
java -Djaxp.debug=1 YourProgram ....
- Параметры:
-
factoryClassName- полное имя класса фабрики, предоставляющей реализациюjavax.xml.parsers.SAXParserFactory. -
classLoader-ClassLoaderдля загрузки класса фабрики. Еслиnullиспользуется текущийThreadкласс загрузки контекста. - Возвращает:
- Новый экземпляр
SAXParserFactory - Выбрасывает:
-
FactoryConfigurationError- еслиfactoryClassNameявляетсяnull, или класс фабрики не может быть загружен или создан. - С:
- 1.6
- См. также:
newInstance()
newSAXParser
public abstract SAXParser newSAXParser()
throws ParserConfigurationException,
SAXException Создаёт новый экземпляр SAXParser с использованием текущих параметров, настроенных в фабрике.
- Возвращает:
- Новый экземпляр SAXParser.
- Выбрасывает:
-
ParserConfigurationException- если парсер не может быть создан, удовлетворяющий запрошенной конфигурации. -
SAXException- при ошибках SAX.
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 в противном случае.
isNamespaceAware
public boolean isNamespaceAware()
Указывает, настроен ли фабрика для создания парсеров, которые понимают пространства имён.
- Возвращает:
- true, если фабрика настроена на создание парсеров, понимающих пространства имён; false в противном случае.
isValidating
public boolean isValidating()
Указывает, настроен ли фабрика для создания парсеров, которые валидируют содержимое XML во время разбора.
- Возвращает:
- true, если фабрика настроена на создание парсеров, которые валидируют содержимое XML во время разбора; false в противном случае.
setFeature
public abstract void setFeature(String name,
boolean value)
throws ParserConfigurationException,
SAXNotRecognizedException,
SAXNotSupportedException Устанавливает определённый параметр в базовой реализации org.xml.sax.XMLReader. Список основных параметров и свойств можно найти на http://www.saxproject.org/
Все реализации обязаны поддерживать параметр XMLConstants.FEATURE_SECURE_PROCESSING. Когда параметр
-
true: реализация будет ограничивать обработку XML, чтобы соответствовать ограничениям реализации. Примеры включают ограничения расширения сущностей и конструкции XML Schema, которые потребляют большие объёмы ресурсов. Если обработка XML ограничена по соображениям безопасности, об этом будет сообщено через вызов зарегистрированного обработчикаErrorHandler.fatalError(SAXParseException exception). См. методыSAXParserparseдля указания обработчика. - Когда параметр
false, реализация будет обрабатывать XML в соответствии со спецификациями XML без учёта возможных ограничений реализации.
- Параметры:
-
name- Имя параметра для установки. -
value- Значение параметра для установки. - Выбрасывает:
-
ParserConfigurationException- если парсер не может быть создан, удовлетворяющий запрошенной конфигурации. -
SAXNotRecognizedException- Когда базовый XMLReader не распознаёт имя параметра. -
SAXNotSupportedException- Когда базовый XMLReader распознаёт имя параметра, но не поддерживает этот параметр. -
NullPointerException- Если параметрnameравен null. - См. также:
XMLReader.setFeature(java.lang.String, boolean)
getFeature
public abstract boolean getFeature(String name)
throws ParserConfigurationException,
SAXNotRecognizedException,
SAXNotSupportedException Возвращает запрошенный параметр в базовой реализации org.xml.sax.XMLReader.
- Параметры:
-
name- Имя параметра для извлечения. - Возвращает:
- Значение запрошенного параметра.
- Выбрасывает:
-
ParserConfigurationException- если парсер не может быть создан, удовлетворяющий запрошенной конфигурации. -
SAXNotRecognizedException- Когда базовый XMLReader не распознаёт имя параметра. -
SAXNotSupportedException- Когда базовый XMLReader распознаёт имя параметра, но не поддерживает этот параметр. - См. также:
XMLReader.getProperty(java.lang.String)
getSchema
public Schema getSchema()
Получает объект Schema, указанный с помощью метода setSchema(Schema schema).
- Возвращает:
- объект
Schema, который был в последний раз задан с помощью методаsetSchema(Schema), или null, если метод не был вызван после созданияSAXParserFactory. - Выбрасывает:
-
UnsupportedOperationException- Когда реализация не переопределяет этот метод - С:
- 1.5
setSchema
public void setSchema(Schema schema)
Установите Schema, используемый парсерами, созданными из этой фабрики.
Когда Schema не равен null, парсер будет использовать созданный из него валидатор для проверки документов перед передачей информации приложению.
При обнаружении предупреждений/ошибок/критических ошибок валидатором, парсер должен обрабатывать их так, как будто эти ошибки были обнаружены самим парсером. Другими словами, если указанный пользователем ErrorHandler установлен, он должен получить эти ошибки, а если нет, то они должны обрабатываться в соответствии со специфичными для реализации правилами обработки ошибок по умолчанию.
Валидатор может изменять поток событий SAX (например, добавляя значения по умолчанию, отсутствующие в документах), и парсер отвечает за то, чтобы приложение получило этот изменённый поток событий.
Изначально, null установлен как Schema.
Эта обработка вступит в силу даже если метод isValidating() возвращает false.
Использование свойства http://java.sun.com/xml/jaxp/properties/schemaSource и/или свойства http://java.sun.com/xml/jaxp/properties/schemaLanguage в сочетании с объектом Schema, отличным от null, является ошибкой. Такая конфигурация приведёт к исключению SAXException при установке этих свойств на SAXParser.
Примечание для разработчиков реализации
Парсер должен уметь работать с любым Schema реализацией. Тем не менее, парсеры и схемы могут использовать специфичные для реализации пользовательские механизмы, если они приводят к результату, описанному в спецификации.
- Parameters:
-
schema-Schemaдля использования,nullдля удаления схемы. - Throws:
-
UnsupportedOperationException- Когда реализация не переопределяет этот метод - Since:
- 1.5
setXIncludeAware
public void setXIncludeAware(boolean state)
Установить состояние обработки XInclude.
Если в экземпляре документа найден тег XInclude, должен ли он обрабатываться в соответствии со спецификацией XML Inclusions (XInclude) Version 1.0.
Обработка XInclude по умолчанию равна false.
- Parameters:
-
state- Установить обработку XInclude вtrueилиfalse - Throws:
-
UnsupportedOperationException- При отсутствии переопределения метода в реализации - Since:
- 1.5
isXIncludeAware
public boolean isXIncludeAware()
Получить состояние обработки XInclude.
- Returns:
- текущее состояние обработки XInclude
- Throws:
-
UnsupportedOperationException- При отсутствии переопределения метода в реализации - Since:
- 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/SAXParserFactory.html