Класс InputSource
public class InputSource extends Object
Этот класс позволяет приложению SAX инкапсулировать сведения об источнике ввода в одном объекте, который может содержать публичный идентификатор, системный идентификатор, поток байтов (возможно, с заданной кодировкой) и/или поток символов.
Приложение может передать источник ввода анализатору в двух случаях: в качестве аргумента метода Parser.parse или в качестве возвращаемого значения метода EntityResolver.resolveEntity.
Анализатор SAX использует объект InputSource, чтобы определить, как читать входные данные XML. Если доступен поток символов, анализатор будет читать его напрямую, игнорируя любые объявления кодировки текста в этом потоке. Если поток символов недоступен, но есть поток байтов, анализатор будет использовать этот поток байтов, применяя кодировку, заданную в InputSource, либо (если кодировка не задана) автоматически определяя кодировку символов с помощью алгоритма, например описанного в спецификации XML. Если недоступны ни поток символов, ни поток байтов, анализатор попытается открыть URI-соединение с ресурсом, указанным системным идентификатором.
Объект InputSource принадлежит приложению: анализатор SAX не должен изменять его каким-либо образом (при необходимости он может изменить копию). Однако при стандартной обработке потоки байтов и символов закрываются в рамках очистки по завершении анализа, поэтому приложениям не следует пытаться повторно использовать такие потоки после их передачи анализатору.
- Начиная с:
- 1.4, SAX 1.0
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
InputSource() |
Конструктор по умолчанию без аргументов. |
InputSource |
Создает новый источник ввода с потоком байтов. |
InputSource |
Создает новый источник ввода с потоком символов. |
InputSource |
Создает новый источник ввода с системным идентификатором. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
InputStream |
getByteStream() |
Возвращает поток байтов для этого источника ввода. |
Reader |
getCharacterStream() |
Возвращает поток символов для этого источника ввода. |
String |
getEncoding() |
Возвращает кодировку символов для потока байтов или URI. |
String |
getPublicId() |
Возвращает публичный идентификатор для этого источника ввода. |
String |
getSystemId() |
Возвращает системный идентификатор для этого источника ввода. |
boolean |
isEmpty() |
Указывает, является ли объект InputSource пустым. |
void |
setByteStream |
Задает поток байтов для этого источника ввода. |
void |
setCharacterStream |
Задает поток символов для этого источника ввода. |
void |
setEncoding |
Задает кодировку символов, если она известна. |
void |
setPublicId |
Задает публичный идентификатор для этого источника ввода. |
void |
setSystemId |
Задает системный идентификатор для этого источника ввода. |
Подробное описание конструкторов
InputSource
public InputSource()
- См. также:
InputSource
public InputSource(String systemId)
Приложения могут использовать setPublicId, чтобы также указать публичный идентификатор, или setEncoding, чтобы задать кодировку символов, если она известна.
Если системный идентификатор является URL-адресом, он должен быть полностью разрешен (он не может быть относительным URL-адресом).
- Параметры:
-
systemId— Системный идентификатор (URI). - См. также:
InputSource
public InputSource(InputStream byteStream)
Разработчикам приложений следует использовать setSystemId(), чтобы указать основу для разрешения относительных URI; можно также использовать setPublicId, чтобы добавить публичный идентификатор, и setEncoding, чтобы задать кодировку символов объекта.
- Параметры:
-
byteStream— Необработанный поток байтов, содержащий документ. - См. также:
InputSource
public InputSource(Reader characterStream)
Разработчикам приложений следует использовать setSystemId(), чтобы указать основу для разрешения относительных URI; можно также использовать setPublicId, чтобы добавить публичный идентификатор.
Поток символов не должен содержать маркер порядка байтов.
- Параметры:
-
characterStream— поток символов - См. также:
Подробное описание методов
setPublicId
public void setPublicId(String publicId)
Публичный идентификатор всегда является необязательным: если разработчик приложения укажет его, он будет включен в сведения о местоположении.
- Параметры:
-
publicId— Публичный идентификатор в виде строки. - См. также:
getPublicId
public String getPublicId()
- Возвращает:
- Публичный идентификатор или null, если он не был указан.
- См. также:
setSystemId
public void setSystemId(String systemId)
Системный идентификатор необязателен, если указан поток байтов или поток символов, но его все же полезно задать, поскольку приложение может использовать его для разрешения относительных URI и включать в сообщения об ошибках и предупреждения (анализатор попытается открыть соединение с URI, только если не указан поток байтов или поток символов).
Если приложению известна кодировка символов объекта, на который указывает системный идентификатор, оно может зарегистрировать эту кодировку с помощью метода setEncoding.
Если системный идентификатор является URL-адресом, он должен быть полностью разрешен (он не может быть относительным URL-адресом).
- Параметры:
-
systemId— Системный идентификатор в виде строки. - См. также:
getSystemId
public String getSystemId()
Метод getEncoding вернет кодировку символов объекта, на который указывает идентификатор, или null, если она неизвестна.
Если системный идентификатор является URL-адресом, он будет полностью разрешен.
- Возвращает:
- Системный идентификатор или null, если он не был указан.
- См. также:
setByteStream
public void setByteStream(InputStream byteStream)
Анализатор SAX проигнорирует этот поток, если также указан поток символов, но предпочтет использовать поток байтов самостоятельному открытию URI-соединения.
Если приложению известна кодировка символов потока байтов, ее следует задать с помощью метода setEncoding.
- Параметры:
-
byteStream— Поток байтов, содержащий документ XML или другую сущность. - См. также:
getByteStream
public InputStream getByteStream()
Метод getEncoding вернет кодировку символов этого потока байтов или null, если она неизвестна.
- Возвращает:
- Поток байтов или null, если он не был указан.
- См. также:
setEncoding
public void setEncoding(String encoding)
Кодировка должна быть строкой, допустимой в объявлении кодировки XML (см. раздел 4.3.3 рекомендации XML 1.0).
Этот метод не действует, если приложение предоставляет поток символов.
- Параметры:
-
encoding— Строка, описывающая кодировку символов. - См. также:
getEncoding
public String getEncoding()
- Возвращает:
- Кодировка или null, если она не была указана.
- См. также:
setCharacterStream
public void setCharacterStream(Reader characterStream)
Если указан поток символов, анализатор SAX проигнорирует любой поток байтов и не будет пытаться открыть URI-соединение с системным идентификатором.
- Параметры:
-
characterStream— Поток символов, содержащий документ XML или другую сущность. - См. также:
getCharacterStream
public Reader getCharacterStream()
- Возвращает:
- Поток символов или null, если он не был указан.
- См. также:
isEmpty
public boolean isEmpty()
InputSource пустым. Пустым считается объект, удовлетворяющий следующим условиям: - Все источники ввода, включая публичный идентификатор, системный идентификатор, поток байтов и поток символов, имеют значение
null. - Публичный и системный идентификаторы имеют значение
null, а поток байтов и поток символов либо имеют значениеnull, либо не содержат байтов или символов.Обратите внимание, что этот метод сбрасывает поток байтов, если он задан, или поток символов, если поток байтов не задан.
В случае ошибки при проверке потока байтов или символов метод вернет false, чтобы позволить обработчику XML обработать ошибку.
- Возвращает:
- true, если объект
InputSourceпустой, иначе false
© 1993, 2025, 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/25/docs/api/java.xml/org/xml/sax/InputSource.html