Класс InputSource
public class InputSource extends Object
Этот класс позволяет приложению SAX инкапсулировать информацию о источнике входных данных в одном объекте, который может включать общедоступный идентификатор, системный идентификатор, поток байтов (возможно, с указанным кодированием) и/или поток символов.
Приложение может предоставить источник входных данных парсеру в двух местах: в качестве аргумента методу Parser.parse или в качестве возвращаемого значения метода EntityResolver.resolveEntity.
SAX парсер будет использовать объект InputSource, чтобы определить, как читать XML входные данные. Если доступен поток символов, парсер будет читать этот поток напрямую, игнорируя любые объявления кодировки символов, найденные в этом потоке. Если поток символов недоступен, но есть поток байтов, парсер будет использовать этот поток байтов, используя кодировку, указанную в InputSource, или (если кодировка не указана) автоматически определять кодировку символов, используя алгоритм, подобный тому, что описан в спецификации XML. Если ни поток символов, ни поток байтов недоступны, парсер попытается открыть соединение URI с ресурсом, идентифицированным системным идентификатором.
Объект InputSource принадлежит приложению: SAX парсер никогда не должен изменять его каким-либо образом (он может изменить копию, если это необходимо). Однако стандартная обработка потоков байтов и символов заключается в их закрытии в рамках очистки по завершении разбора, поэтому приложениям не следует пытаться повторно использовать такие потоки после того, как они были переданы парсеру.
- Since:
- 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, 2021, 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/17/docs/api/java.xml/org/xml/sax/InputSource.html